123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow, Separator
- from tkinter import *
- from SoundGenerator import *
- import csv
-
-
- """--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
- """-------Funktionen links-------------"""
-
-
- def links_scale_lautstärke_change(self):
- tinnitus.linksLautstaerke = float(linksScaleLautstärke.get())/100 # scale liefert 0-100%, tinnitus.lautstärke 0-1
- print("Links Lautstärke =", tinnitus.linksLautstaerke*100, "%")
- sound.play()
-
-
- def links_scale_frequenz_change(self):
- tinnitus.linksFrequenz = float(linksScaleFrequenz.get())*1000 # scale liefert 20-20kHz, tinnitus.frequenz in Hz
- print("Links Frequenz = ", tinnitus.linksFrequenz, " Hz")
- sound.play()
-
-
- def links_scale_rauschen_lautstärke_change(self):
- tinnitus.linksRauschenLautstaerke = float(linksScaleRauschenLautstärke.get()/1000)
- print("Links Rauschen Lautstärke = ", tinnitus.linksRauschenLautstaerke*1000, "%")
- sound.play()
-
-
- def links_scale_rauschen_mittelfrequenz_change(self):
- linksRauschenMittelfrequenz = float(linksScaleRauschenMittelFrequenz.get())
- print("Links Rauschen Mittelfrequenz = ", linksRauschenMittelfrequenz)
- sound.play()
-
-
- def links_scale_rauschen_bandbreite_change(self):
- linksRauschenBandbreite = float(linksScaleRauschenBandbreite.get())
- print("Links Rauschen Bandbreite = ", linksRauschenBandbreite)
- sound.play()
-
-
- """----------Funktionen rechts----------"""
-
-
- def rechts_scale_lautstärke_change(self):
- tinnitus.rechtsLautstaerke = float(rechtsScaleLautstärke.get()/100)
- print("Rechts Lautstärke =", tinnitus.rechtsLautstaerke, "%")
- sound.play()
-
-
- def rechts_scale_frequenz_change(self):
- tinnitus.rechtsFrequenz = float(rechtsScaleFrequenz.get()*1000)
- print("Rechts Frequenz= ", tinnitus.rechtsFrequenz, " Hz")
- sound.play()
-
-
- def rechts_scale_rauschen_lautstärke_change(self):
- tinnitus.rechtsRauschenLautstaerke = float(rechtsScaleRauschenLautstärke.get()/1000)
- print("Rechts Rauschen Lautstärke = ", tinnitus.rechtsRauschenLautstaerke*1000, "%")
- sound.play()
-
-
- def rechts_scale_rauschen_mittelfrequenz_change(self):
- rechtsRauschenMittelfrequenz = float(rechtsScaleRauschenMittelFrequenz.get())
- print("Rechts Rauschen Mittelfrequenz = ", rechtsRauschenMittelfrequenz)
- sound.play()
-
-
- def rechts_scale_rauschen_bandbreite_change(self):
- rechtsRauschenBandbreite = float(rechtsScaleRauschenBandbreite.get())
- print("Rechts Rauschen Bandbreite = ", rechtsRauschenBandbreite)
- sound.play()
-
-
- """--------------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")
- print("fehlgeschlagener Speicherversuch - Keine Eingaben gemacht")
- else:
- tinnitus.vorname = untenEntryVorname.get()
- tinnitus.nachname = untenEntryNachname.get()
- print("Speichere Patientendaten, siehe TinnitusDaten.csv")
- tinnitus.speichern()
-
-
- def unten_button_play_press():
- print("button play pressed -> mute=false")
- sound.mute = False
- sound.play()
-
- def unten_button_stop_press():
- print("button stop press -> mute=true")
- sound.mute = True
- sound.stop()
-
-
- """"""
- tinnitus = Tinnitus()
- sound = Sound(tinnitus)
- print("test")
-
- """------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------"""
- root = Tk() # build the main window
- root.title("Tinnitus Analyse")
- #root.iconbitmap('headphones.ico') #todo: fix icon
- #root.minsize(width=200, height=600)
- root.resizable(True, True)
- root.columnconfigure(0, weight=1) # falls freier Platz im Fenster ist, werden die Frames diesen benutzen
- root.rowconfigure(0, weight=1)
-
-
- """------------------------------------------LINKER FRAME------------------------------------------------------------"""
- 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)) # the frame sticks to every side of the window when resized
-
- linksLautstärke = DoubleVar()
- linksFrequenz = DoubleVar()
- linksRauschenLautstärke = DoubleVar()
- linksRauschenFrequenzband = DoubleVar()
-
- # ------------------ LAUTSTÄRKE ------------------
- 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))
-
-
- """----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
- rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
- rechterFrame.grid(column=2, row=0, sticky=(N + E + W))
-
- # Variablen Rechts
- rechtsFrequenz = DoubleVar()
- rechtsRauschenLautstärke = DoubleVar()
- rechtsRauschenFrequenzband = DoubleVar()
- rechtsLautstärke = DoubleVar()
-
- # ------------------ LAUTSTÄRKE ------------------
- rechtsLabelLautstärke = Label(rechterFrame, text="Lautstärke [%]:")
- rechtsLabelLautstärke.grid(column=0, row=0, sticky=W)
- rechtsScaleLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
- command=rechts_scale_lautstärke_change)
- rechtsScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
-
- # -------- FREQUENZ ------------------------
- rechtsLabelFrequenz = Label(rechterFrame, text="Frequenz [kHz]")
- rechtsLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
- rechtsScaleFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
- command=rechts_scale_frequenz_change)
- rechtsScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
-
- # ----------- ABTRENNSTRICH ----------------
- rechtsSeparator = Separator(rechterFrame, orient="horizontal")
- rechtsSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
-
- # ----------- RAUSCHEN --------------------
- rechtsLabelRauschenLautstärke = Label(rechterFrame, text="Rauschen Lautstärke %", anchor="w")
- rechtsLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
- rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
- command=rechts_scale_rauschen_lautstärke_change)
- 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))
-
-
- """------------------------------------------------ UNTERER FRAME----------------------------------------------------"""
- untererFrame = LabelFrame(root, text="Generelles", border=10)
- untererFrame.grid(column=0, row=1, sticky=(N + W + S))
-
- vorname = StringVar() # Name des Patienten als String um den generierten Tinnitus später zuordnen zu können
- nachname = StringVar()
- kommentare = StringVar() # Ein Feld in dass der Patient noch weitere Kommentare angeben kann
- # Den unteren Frame füllen----------------------------------------------------------------------------------------------
-
- # --------- OHREN SYNCHRONISIEREN -----------------------
- untenLabelOhrenSynchro = Label(untererFrame, text="Einstellungen von ")
- untenLabelOhrenSynchro.grid(column=0, row=0, sticky=(N + W))
- untenComboOhrenSynchro = Combobox(untererFrame, values=["Linkes Ohr", "Rechtes Ohr"])
- untenComboOhrenSynchro.grid(column=1, row=0, sticky=(N + W + E + S))
- untenLabelOhrenSynchro2 = Label(untererFrame, text=" für beide übernehmen")
- untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S))
- untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen",
- 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 --------------------
- untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold",
- command=unten_button_speichern_press)
- untenButtonSpeichern.grid(column=4, row=6, sticky=S)
-
-
-
- # todo: , relief="raised" für play button
-
-
- root.mainloop()
|