GUI update

Große Änderung:

1) Aufteilung in links u rechts, statt l,r und beide
2) Tonänderungen mittels größerer Schieberegler realisiert
3) Alle Widgets mit Funktionen verbunden
4) farbige PLAY & STOP Button hinzugefügt, bisher ohne Funktion
5) Wenn man Speichern drückt, wird erst geprüft ob man einen Namen eingegeben hat
6) Funktionalität linkes/rechtes Ohr auf jeweils Anderes implementiert
7) Viele kleine visuelle Änderungen
This commit is contained in:
seyffejn 2020-06-09 15:13:00 +02:00
parent 9525cf30f4
commit b73ae42745
4 changed files with 339 additions and 130 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
TinnitusAnalyse/.idea/dictionaries/Julian.xml
TinnitusAnalyse/.idea/workspace.xml
TinnitusAnalyse/eggs.csv

View File

@ -2,18 +2,30 @@
<dictionary name="Julian"> <dictionary name="Julian">
<words> <words>
<w>audioausgabe</w> <w>audioausgabe</w>
<w>bandbreite</w>
<w>beide</w> <w>beide</w>
<w>beiden</w> <w>beiden</w>
<w>definieren</w>
<w>frequenz</w> <w>frequenz</w>
<w>kommentare</w>
<w>lautstärke</w> <w>lautstärke</w>
<w>linkem</w> <w>linkem</w>
<w>linken</w>
<w>linkes</w> <w>linkes</w>
<w>mittel</w>
<w>mittelfrequenz</w>
<w>nachname</w> <w>nachname</w>
<w>ohren</w> <w>ohren</w>
<w>rauschen</w> <w>rauschen</w>
<w>rauschens</w>
<w>rechtem</w> <w>rechtem</w>
<w>rechten</w>
<w>rechter</w>
<w>rechtes</w> <w>rechtes</w>
<w>rechts</w>
<w>variablen</w>
<w>vorname</w> <w>vorname</w>
<w>zwischen</w>
</words> </words>
</dictionary> </dictionary>
</component> </component>

View File

@ -2,9 +2,7 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="5b3f2136-e422-4072-84be-e86e40fa2d55" name="Default Changelist" comment=""> <list default="true" id="5b3f2136-e422-4072-84be-e86e40fa2d55" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/TinnitusAnalyse.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/TinnitusAnalyse.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" />
</list> </list>
@ -15,14 +13,35 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true"> <file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py"> <entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270"> <state relative-caret-position="396">
<caret line="89" column="74" selection-start-line="89" selection-start-column="74" selection-end-line="89" selection-end-column="74" /> <caret line="93" lean-forward="true" selection-start-line="93" selection-end-line="93" />
<folding> <folding>
<element signature="e#0#54#0" expanded="true" /> <element signature="e#0#117#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="26435">
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="14" column="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding>
<element signature="e#0#11#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
@ -31,7 +50,7 @@
<file pinned="false" current-in-tab="false"> <file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py"> <entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="281"> <state relative-caret-position="9367">
<caret line="552" selection-start-line="552" selection-end-line="552" /> <caret line="552" selection-start-line="552" selection-end-line="552" />
</state> </state>
</provider> </provider>
@ -50,7 +69,14 @@
<findStrings> <findStrings>
<find>ttk</find> <find>ttk</find>
<find>mainFrame</find> <find>mainFrame</find>
<find>aktLabelFrame</find>
<find>linkerFrame</find> <find>linkerFrame</find>
<find>Var</find>
<find>Entry</find>
<find>Scale</find>
<find>linker</find>
<find>für alle</find>
<find>scale_lautstärke_links_change</find>
</findStrings> </findStrings>
<dirStrings> <dirStrings>
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir> <dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
@ -67,10 +93,10 @@
</option> </option>
</component> </component>
<component name="ProjectFrameBounds" extendedState="6"> <component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="321" /> <option name="x" value="-8" />
<option name="y" value="274" /> <option name="y" value="-8" />
<option name="width" value="1602" /> <option name="width" value="1696" />
<option name="height" value="1093" /> <option name="height" value="1066" />
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" /> <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView"> <component name="ProjectView">
@ -102,7 +128,28 @@
</list> </list>
</option> </option>
</component> </component>
<component name="RunManager"> <component name="RunManager" selected="Python.TinnitusAnalyse_GUI">
<configuration name="SoundGenerator" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="TinnitusAnalyse" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/SoundGenerator.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="TinnitusAnalyse_GUI" type="PythonConfigurationType" factoryName="Python" temporary="true"> <configuration name="TinnitusAnalyse_GUI" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="TinnitusAnalyse" /> <module name="TinnitusAnalyse" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
@ -127,6 +174,7 @@
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="Python.TinnitusAnalyse_GUI" /> <item itemvalue="Python.TinnitusAnalyse_GUI" />
<item itemvalue="Python.SoundGenerator" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -145,15 +193,14 @@
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-8" y="-8" width="2576" height="1416" extended-state="6" /> <frame x="-8" y="-8" width="2576" height="1416" extended-state="6" />
<editor active="true" />
<layout> <layout>
<window_info content_ui="combo" id="Project" order="0" weight="0.18479118" /> <window_info content_ui="combo" id="Project" order="0" weight="0.18479118" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" /> <window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" /> <window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" /> <window_info anchor="bottom" id="Find" order="1" />
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.30553392" /> <window_info anchor="bottom" id="Run" order="2" weight="0.21200311" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> <window_info anchor="bottom" id="Debug" order="3" weight="0.39977604" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" /> <window_info anchor="bottom" id="TODO" order="6" />
@ -189,29 +236,39 @@
<entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml"> <entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml">
<provider selected="true" editor-type-id="text-editor" /> <provider selected="true" editor-type-id="text-editor" />
</entry> </entry>
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="396">
<caret line="93" lean-forward="true" selection-start-line="93" selection-end-line="93" />
<folding>
<element signature="e#0#117#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py"> <entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="809"> <state relative-caret-position="26435">
<caret line="2522" column="16" selection-start-line="2522" selection-start-column="16" selection-end-line="2522" selection-end-column="16" /> <caret line="1557" selection-start-line="1557" selection-end-line="1557" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="14" column="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding>
<element signature="e#0#11#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py"> <entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="281"> <state relative-caret-position="9367">
<caret line="552" selection-start-line="552" selection-end-line="552" /> <caret line="552" selection-start-line="552" selection-end-line="552" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="89" column="74" selection-start-line="89" selection-start-column="74" selection-end-line="89" selection-end-column="74" />
<folding>
<element signature="e#0#54#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component> </component>
</project> </project>

View File

@ -1,136 +1,272 @@
from tkinter import * # all the classic tkinter stuff from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow, Separator
from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow from tkinter import *
import csv
# FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------------------------------------
def button_rauschen_minus_press():
print("Rauschen_Press_Plus pressed")
def button_rauschen_plus_press(): """--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
print("Rauschen Press_Minus pressed") """-------Funktionen links-------------"""
# Ohr (links/beide/rechts) def links_scale_lautstärke_change(self):
def button_linkes_ohr_press(): linksLautstärke = float(linksScaleLautstärke.get())
print("button linkes ohr pressed") print("Links Lautstärke =", linksLautstärke)
def button_beide_ohren_press(): def links_scale_frequenz_change(self):
print("button beide ohren pressed") linksFrequenz = float(linksScaleFrequenz.get())
print("Links Frequenz = ", linksFrequenz)
def button_rechtes_ohr_press(): def links_scale_rauschen_lautstärke_change(self):
print("button rechtes ohr pressed") linksRauschenLautstärke = float(linksScaleRauschenLautstärke.get())
print("Links Rauschen Lautstärke = ", linksRauschenLautstärke)
# Lautstärke def links_scale_rauschen_mittelfrequenz_change(self):
def scale_lautstärke_change(self): linksRauschenMittelfrequenz = float(linksScaleRauschenMittelFrequenz.get())
lautstärke = float(scaleLautstärke.get()) print("Links Rauschen Mittelfrequenz = ", linksRauschenMittelfrequenz)
print(lautstärke)
def button_ohren_synchro():
auswahl = comboOhrenSynchro.get() # holt die momentane Auswahl aus combobox
print("Einstellungen von:" + auswahl + " auf alle anderen Ohren setzen")
# AUFBAU DES ROOT WINDOWS ---------------------------------------------------------------------------------------------- def links_scale_rauschen_bandbreite_change(self):
linksRauschenBandbreite = float(linksScaleRauschenBandbreite.get())
print("Links Rauschen Bandbreite = ", linksRauschenBandbreite)
"""----------Funktionen rechts----------"""
def rechts_scale_lautstärke_change(self):
rechtsLautstärke = float(rechtsScaleLautstärke.get())
print("Rechts Lautstärke =", rechtsLautstärke)
def rechts_scale_frequenz_change(self):
rechtsFrequenz = float(rechtsScaleFrequenz.get())
print("Rechts Frequenz= ", rechtsFrequenz)
def rechts_scale_rauschen_lautstärke_change(self):
rechtsRauschenLautstärke = float(rechtsScaleRauschenLautstärke.get())
print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke)
def rechts_scale_rauschen_mittelfrequenz_change(self):
rechtsRauschenMittelfrequenz = float(rechtsScaleRauschenMittelFrequenz.get())
print("Rechts Rauschen Mittelfrequenz = ", rechtsRauschenMittelfrequenz)
def rechts_scale_rauschen_bandbreite_change(self):
rechtsRauschenBandbreite = float(rechtsScaleRauschenBandbreite.get())
print("Rechts Rauschen Bandbreite = ", rechtsRauschenBandbreite)
"""--------------Funktionen unten------------------"""
def unten_button_ohren_synchro():
auswahl = untenComboOhrenSynchro.get() # holt die momentane Auswahl aus combobox
print("Einstellungen von:" + auswahl + " das auf das jeweils andere Ohr setzen")
if auswahl == "Linkes Ohr": # linkes --> rechts
rechtsScaleLautstärke.set(linksScaleLautstärke.get())
rechtsScaleFrequenz.set(linksScaleFrequenz.get())
rechtsScaleRauschenLautstärke.set(linksScaleRauschenLautstärke.get())
rechtsScaleRauschenMittelFrequenz.set(linksScaleRauschenMittelFrequenz.get())
rechtsScaleRauschenBandbreite.set(linksScaleRauschenBandbreite.get())
if auswahl == "Rechtes Ohr": # rechts --> links
linksScaleLautstärke.set(rechtsScaleLautstärke.get())
linksScaleFrequenz.set(rechtsScaleFrequenz.get())
linksScaleRauschenLautstärke.set(rechtsScaleRauschenLautstärke.get())
linksScaleRauschenMittelFrequenz.set(rechtsScaleRauschenMittelFrequenz.get())
linksScaleRauschenBandbreite.set(rechtsScaleRauschenBandbreite.get())
def unten_button_speichern_press():
print("button speichern pressed")
# Wenn man Speichern will bevor ein Name eingegeben wurde
if (not untenEntryVorname.get()) or (not untenEntryNachname.get()) or \
(untenEntryNachname == "Erst Namen..") or (untenEntryVorname == "..eintragen bitte"):
nachname.set("Erst Namen..")
vorname.set("..eintragen bitte")
else:
print("TEST")
def unten_button_play_press():
print("button play pressed")
def unten_button_stop_press():
print("button stop press")
"""------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------"""
root = Tk() # build the main window root = Tk() # build the main window
root.title("Tinnitus Analyse") root.title("Tinnitus Analyse")
#root.iconbitmap('headphones.ico') #todo: fix icon #root.iconbitmap('headphones.ico') #todo: fix icon
root.minsize(width=800, height=600) #root.minsize(width=200, height=600)
root.resizable(True, True) root.resizable(True, True)
#root.columnconfigure(0, weight=1) root.columnconfigure(0, weight=1) # falls freier Platz im Fenster ist, werden die Frames diesen benutzen
root.rowconfigure(0, weight=1) # extra platz nach unten wird automatisch von Frames eingenommen root.rowconfigure(0, weight=1)
# DIE DREI OBEREN FRAMES AUFBAUEN--------------------------------------------------------------------------------------- """------------------------------------------LINKER FRAME------------------------------------------------------------"""
linkerFrame = LabelFrame(root, text="linkes Ohr", width=100, height = 100, padding="3 3 30 30") # parent is root, padding is extra space at the edges linkerFrame = LabelFrame(root, text="Linkes Ohr", font="bold") # parent is root, padding is extra space at the edges
linkerFrame.grid(column=0, row=0, sticky=(N + W + E + S)) # the frame sticks to every side of the window when resized linkerFrame.grid(column=0, row=0, sticky=(N + W + E)) # the frame sticks to every side of the window when resized
mittlererFrame = LabelFrame(root, text="beide Ohren", width=100, height=100, padding="3 3 30 30") linksLautstärke = DoubleVar()
mittlererFrame.grid(column=1, row=0, sticky=(N + W + E + S)) linksFrequenz = DoubleVar()
linksRauschenLautstärke = DoubleVar()
linksRauschenFrequenzband = DoubleVar()
rechterFrame = LabelFrame(root, text="rechtes Ohr", width=100, height=100, padding="3 3 30 30") # ------------------ LAUTSTÄRKE ------------------
rechterFrame.grid(column=2, row=0, sticky=(N + W + E + S)) linksLabelLautstärke = Label(linkerFrame, text="Lautstärke [%]:")
linksLabelLautstärke.grid(column=0, row=0, sticky=W)
linksScaleLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
command=links_scale_lautstärke_change)
linksScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
# -------- FREQUENZ ------------------------
linksLabelFrequenz = Label(linkerFrame, text="Frequenz [kHz]")
linksLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
linksScaleFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
command=links_scale_frequenz_change)
linksScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
# ----------- ABTRENNSTRICH ----------------
linksSeparator = Separator(linkerFrame, orient="horizontal")
linksSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
# ----------- RAUSCHEN --------------------
linksLabelRauschenLautstärke = Label(linkerFrame, text="Rauschen Lautstärke %", anchor="w")
linksLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
linksScaleRauschenLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
command=links_scale_rauschen_lautstärke_change)
linksScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
linksLabelRauschenMittelFrequenz = Label(linkerFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
linksLabelRauschenMittelFrequenz .grid(column=0, row=4)
linksScaleRauschenMittelFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
command=links_scale_rauschen_mittelfrequenz_change)
linksScaleRauschenMittelFrequenz.grid(column=1, row=4)
linksLabelRauschenBandbreite= Label(linkerFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
linksLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
linksScaleRauschenBandbreite = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
command=links_scale_rauschen_bandbreite_change)
linksScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
# DIE DREI OBEREN FRAMES FÜLLEN----------------------------------------------------------------------------------------- """----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
labelFrames = [linkerFrame, mittlererFrame, rechterFrame] rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
for aktLabelFrame in labelFrames: rechterFrame.grid(column=2, row=0, sticky=(N + E + W))
# -------- FREQUENZ ------------------------
labelFrequenz = Label(aktLabelFrame, text="Frequenz [kHz]") # Variablen Rechts
labelFrequenz.grid(row=0, column=0, sticky=W) # sticky = w(est) makes the text left aligned rechtsFrequenz = DoubleVar()
frequenz = DoubleVar() # Frequenz Variable [kHz] rechtsRauschenLautstärke = DoubleVar()
entryFrequenz = Entry(aktLabelFrame, textvariable=frequenz) # create a field where u can enter text rechtsRauschenFrequenzband = DoubleVar()
entryFrequenz.grid(column=1, row=0, sticky=W) # position the field rechtsLautstärke = DoubleVar()
# todo: Failproof the entry field to just numbers between a range!
# todo: add function to entry change! # ------------------ LAUTSTÄRKE ------------------
# ----------- RAUSCHEN -------------------- rechtsLabelLautstärke = Label(rechterFrame, text="Lautstärke [%]:")
# todo: iwas überlegen ich brauch 3 verschiedene stringVars eigentlich für jedes Ohr!!! rechtsLabelLautstärke.grid(column=0, row=0, sticky=W)
# todo: add function to entry change rechtsScaleLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
labelRauschen = Label(aktLabelFrame, text="Rauschen[+/- kHz]", anchor="w") command=rechts_scale_lautstärke_change)
labelRauschen.grid(column=0, row=1, sticky=W) rechtsScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
buttonRauschenPlus = Button(aktLabelFrame, text="+", command=button_rauschen_plus_press)
buttonRauschenPlus.grid(column=2, row=1) # -------- FREQUENZ ------------------------
buttonRauschenMinus = Button(aktLabelFrame, text="-", command=button_rauschen_minus_press) rechtsLabelFrequenz = Label(rechterFrame, text="Frequenz [kHz]")
buttonRauschenMinus.grid(column=3, row=1) rechtsLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
rauschen = StringVar() # Rauschen Variable [+/- kHz] rechtsScaleFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
entryRauschen = Entry(aktLabelFrame, textvariable=rauschen) # create a field where u can enter text command=rechts_scale_frequenz_change)
entryRauschen.grid(column=1, row=1, sticky=W) # position the field rechtsScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
# ------------------ LAUTSTÄRKE ------------------
labelLautstärke = Label(aktLabelFrame, text="Lautstärke [%]:") # ----------- ABTRENNSTRICH ----------------
labelLautstärke.grid(column=0, row=3, sticky="w") rechtsSeparator = Separator(rechterFrame, orient="horizontal")
scaleLautstärke = Scale(aktLabelFrame, from_=0, to=100, orient=HORIZONTAL, length=200, command=scale_lautstärke_change) rechtsSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
scaleLautstärke.grid(column=1, row=3, columnspan=2)
# ------------ KOMMENTAR ---------------- # ----------- RAUSCHEN --------------------
labelKommentar = Label(aktLabelFrame, text="weitere Kommentare:") rechtsLabelRauschenLautstärke = Label(rechterFrame, text="Rauschen Lautstärke %", anchor="w")
labelKommentar.grid(column=0, row=4) rechtsLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
kommentar = StringVar() # Rauschen Variable [+/- kHz] rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
entryKommentar = Entry(aktLabelFrame, textvariable=kommentar, width=33) # create a field where u can enter text command=rechts_scale_rauschen_lautstärke_change)
entryKommentar.grid(column=1, row=4, rowspan=4, columnspan=2, sticky=W) rechtsScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
rechtsLabelRauschenMittelFrequenz = Label(rechterFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
rechtsLabelRauschenMittelFrequenz .grid(column=0, row=4)
rechtsScaleRauschenMittelFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
command=rechts_scale_rauschen_mittelfrequenz_change)
rechtsScaleRauschenMittelFrequenz.grid(column=1, row=4)
rechtsLabelRauschenBandbreite = Label(rechterFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
rechtsLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
rechtsScaleRauschenBandbreite = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
command=rechts_scale_rauschen_bandbreite_change)
rechtsScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
# DEN UNTEREN FRAME BAUEN----------------------------------------------------------------------------------------------- """------------------------------------------------ UNTERER FRAME----------------------------------------------------"""
untererFrame = LabelFrame(root, text="Generelles", width=300, height=100, padding="3 3 30 30") untererFrame = LabelFrame(root, text="Generelles", border=10)
untererFrame.grid(column=0, row=1, columnspan=3, sticky=(N + W + E + S)) untererFrame.grid(column=0, row=1, sticky=(N + W + S))
# DEN UNTEREN FRAME FÜLLEN---------------------------------------------------------------------------------------------- vorname = StringVar() # Name des Patienten als String um den generierten Tinnitus später zuordnen zu können
# ------------NAMENSEINGABE-------------
labelNachname = Label(untererFrame, text="Nachname:")
labelNachname.grid(column=0, row=0)
nachname = StringVar() nachname = StringVar()
entryNachname = Entry(untererFrame, textvariable=nachname) kommentare = StringVar() # Ein Feld in dass der Patient noch weitere Kommentare angeben kann
entryNachname.grid(column=1, row=0) # Den unteren Frame füllen----------------------------------------------------------------------------------------------
labelVorname = Label(untererFrame, text="Vorname:")
labelVorname.grid(column=2, row=0)
vorname = StringVar()
entryVorname = Entry(untererFrame, textvariable=vorname)
entryVorname.grid(column=3, row=0)
# ------------------OHRENAUSWAHL-----------
labelOhren = Label(untererFrame, text="Audioausgabe auf:")
labelOhren.grid(column=0, row=1, sticky="w")
buttonLinkesOhr = Button(untererFrame, text="linkem Ohr", command=button_linkes_ohr_press)
buttonLinkesOhr.grid(column=1, row=1)
buttonBeideOhren = Button(untererFrame, text="beiden Ohren", command=button_beide_ohren_press)
buttonBeideOhren.grid(column=2, row=1)
buttonRechtesOhr = Button(untererFrame, text="rechtem Ohr", command=button_rechtes_ohr_press)
buttonRechtesOhr.grid(column=3, row=1)
# --------- OHREN SYNCHRONISIEREN ----------------------- # --------- OHREN SYNCHRONISIEREN -----------------------
labelOhrenSynchro = Label(untererFrame, text="Einstellungen von ") untenLabelOhrenSynchro = Label(untererFrame, text="Einstellungen von ")
labelOhrenSynchro.grid(column=0, row=2) untenLabelOhrenSynchro.grid(column=0, row=0, sticky=(N + W))
comboOhrenSynchro = Combobox(untererFrame, values=["Linkes Ohr", "Rechtes Ohr", "Beide Ohren"]) untenComboOhrenSynchro = Combobox(untererFrame, values=["Linkes Ohr", "Rechtes Ohr"])
comboOhrenSynchro.grid(column=1, row=2) untenComboOhrenSynchro.grid(column=1, row=0, sticky=(N + W + E + S))
labelOhrenSynchro2 = Label(untererFrame, text=" für alle anderen Ohren übernehmen") untenLabelOhrenSynchro2 = Label(untererFrame, text=" für beide übernehmen")
labelOhrenSynchro2.grid(column=2, row=2) untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S))
buttonOhrenSynchro = Button(untererFrame, text="Bestätigen", command=button_ohren_synchro) untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen",
buttonOhrenSynchro.grid(column=3, row=2) command=unten_button_ohren_synchro)
untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + W + E + S))
#----------- PLAY BUTTON
untenButtonPlay = Button(untererFrame, text="PLAY", font="bold", relief="raised", bg="green", fg="white",
command=unten_button_play_press)
untenButtonPlay.grid(column=8, row=0, sticky=(N + W + E + S))
#------------STOP BUTTON-------------
untenButtonStop = Button(untererFrame, text="STOP", font="bold", relief="raised", bg="red", fg="white",
command=unten_button_stop_press)
untenButtonStop.grid(column=9, row=0, sticky=(N + W + E + S))
# ----------- ABTRENNSTRICHE ----------------
untenSeparator = Separator(untererFrame, orient="horizontal")
untenSeparator.grid(column=0, row=1, columnspan=10, sticky=(W + E))
untenSeperator2 = Separator(untererFrame, orient="vertical")
untenSeperator2.grid(column=5, rowspan=5, sticky=N+S)
# ------------NAMENSEINGABE-------------
untenLabelNachname = Label(untererFrame, text="Nachname:")
untenLabelNachname.grid(column=0, row=2, sticky=W)
untenEntryNachname = Entry(untererFrame, textvariable=nachname)
untenEntryNachname.grid(column=1, row=2, sticky=W)
untenLabelVorname = Label(untererFrame, text="Vorname:")
untenLabelVorname.grid(column=0, row=3, sticky=W)
untenEntryVorname = Entry(untererFrame, textvariable=vorname)
untenEntryVorname.grid(column=1, row=3, sticky=W)
# ------------ KOMMENTAR ----------------
untenLabelKommentar = Label(untererFrame, text="weitere Kommentare:")
untenLabelKommentar.grid(column=0, row=4, sticky=W)
untenTextKommentar = Text(untererFrame, height=10, width=50) # create a field where u can enter text
untenTextKommentar.grid(column=1, row=4, columnspan=3, rowspan=3)
# ----------- SPEICHERN -------------------- # ----------- SPEICHERN --------------------
buttonSpeichern = Button(untererFrame, text="SPEICHERN") untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold",
buttonSpeichern.grid(column=6, row=3) command=unten_button_speichern_press)
untenButtonSpeichern.grid(column=4, row=6, sticky=S)
# todo: , relief="raised" für play button
root.mainloop() root.mainloop()