Datenablage für Tinnitus Therapie Projektarbeit von Julian Seyffer und Heiko Ommert SS2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TinnitusAnalyse_GUI.py 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow, Separator
  2. from tkinter import *
  3. import csv
  4. """--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
  5. """-------Funktionen links-------------"""
  6. def links_scale_lautstärke_change(self):
  7. linksLautstärke = float(linksScaleLautstärke.get())
  8. print("Links Lautstärke =", linksLautstärke)
  9. def links_scale_frequenz_change(self):
  10. linksFrequenz = float(linksScaleFrequenz.get())
  11. print("Links Frequenz = ", linksFrequenz)
  12. def links_scale_rauschen_lautstärke_change(self):
  13. linksRauschenLautstärke = float(linksScaleRauschenLautstärke.get())
  14. print("Links Rauschen Lautstärke = ", linksRauschenLautstärke)
  15. def links_scale_rauschen_mittelfrequenz_change(self):
  16. linksRauschenMittelfrequenz = float(linksScaleRauschenMittelFrequenz.get())
  17. print("Links Rauschen Mittelfrequenz = ", linksRauschenMittelfrequenz)
  18. def links_scale_rauschen_bandbreite_change(self):
  19. linksRauschenBandbreite = float(linksScaleRauschenBandbreite.get())
  20. print("Links Rauschen Bandbreite = ", linksRauschenBandbreite)
  21. """----------Funktionen rechts----------"""
  22. def rechts_scale_lautstärke_change(self):
  23. rechtsLautstärke = float(rechtsScaleLautstärke.get())
  24. print("Rechts Lautstärke =", rechtsLautstärke)
  25. def rechts_scale_frequenz_change(self):
  26. rechtsFrequenz = float(rechtsScaleFrequenz.get())
  27. print("Rechts Frequenz= ", rechtsFrequenz)
  28. def rechts_scale_rauschen_lautstärke_change(self):
  29. rechtsRauschenLautstärke = float(rechtsScaleRauschenLautstärke.get())
  30. print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke)
  31. def rechts_scale_rauschen_mittelfrequenz_change(self):
  32. rechtsRauschenMittelfrequenz = float(rechtsScaleRauschenMittelFrequenz.get())
  33. print("Rechts Rauschen Mittelfrequenz = ", rechtsRauschenMittelfrequenz)
  34. def rechts_scale_rauschen_bandbreite_change(self):
  35. rechtsRauschenBandbreite = float(rechtsScaleRauschenBandbreite.get())
  36. print("Rechts Rauschen Bandbreite = ", rechtsRauschenBandbreite)
  37. """--------------Funktionen unten------------------"""
  38. def unten_button_ohren_synchro():
  39. auswahl = untenComboOhrenSynchro.get() # holt die momentane Auswahl aus combobox
  40. print("Einstellungen von:" + auswahl + " das auf das jeweils andere Ohr setzen")
  41. if auswahl == "Linkes Ohr": # linkes --> rechts
  42. rechtsScaleLautstärke.set(linksScaleLautstärke.get())
  43. rechtsScaleFrequenz.set(linksScaleFrequenz.get())
  44. rechtsScaleRauschenLautstärke.set(linksScaleRauschenLautstärke.get())
  45. rechtsScaleRauschenMittelFrequenz.set(linksScaleRauschenMittelFrequenz.get())
  46. rechtsScaleRauschenBandbreite.set(linksScaleRauschenBandbreite.get())
  47. if auswahl == "Rechtes Ohr": # rechts --> links
  48. linksScaleLautstärke.set(rechtsScaleLautstärke.get())
  49. linksScaleFrequenz.set(rechtsScaleFrequenz.get())
  50. linksScaleRauschenLautstärke.set(rechtsScaleRauschenLautstärke.get())
  51. linksScaleRauschenMittelFrequenz.set(rechtsScaleRauschenMittelFrequenz.get())
  52. linksScaleRauschenBandbreite.set(rechtsScaleRauschenBandbreite.get())
  53. def unten_button_speichern_press():
  54. print("button speichern pressed")
  55. # Wenn man Speichern will bevor ein Name eingegeben wurde
  56. if (not untenEntryVorname.get()) or (not untenEntryNachname.get()) or \
  57. (untenEntryNachname == "Erst Namen..") or (untenEntryVorname == "..eintragen bitte"):
  58. nachname.set("Erst Namen..")
  59. vorname.set("..eintragen bitte")
  60. else:
  61. print("TEST")
  62. def unten_button_play_press():
  63. print("button play pressed")
  64. def unten_button_stop_press():
  65. print("button stop press")
  66. """------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------"""
  67. root = Tk() # build the main window
  68. root.title("Tinnitus Analyse")
  69. #root.iconbitmap('headphones.ico') #todo: fix icon
  70. #root.minsize(width=200, height=600)
  71. root.resizable(True, True)
  72. root.columnconfigure(0, weight=1) # falls freier Platz im Fenster ist, werden die Frames diesen benutzen
  73. root.rowconfigure(0, weight=1)
  74. """------------------------------------------LINKER FRAME------------------------------------------------------------"""
  75. linkerFrame = LabelFrame(root, text="Linkes Ohr", font="bold") # parent is root, padding is extra space at the edges
  76. linkerFrame.grid(column=0, row=0, sticky=(N + W + E)) # the frame sticks to every side of the window when resized
  77. linksLautstärke = DoubleVar()
  78. linksFrequenz = DoubleVar()
  79. linksRauschenLautstärke = DoubleVar()
  80. linksRauschenFrequenzband = DoubleVar()
  81. # ------------------ LAUTSTÄRKE ------------------
  82. linksLabelLautstärke = Label(linkerFrame, text="Lautstärke [%]:")
  83. linksLabelLautstärke.grid(column=0, row=0, sticky=W)
  84. linksScaleLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
  85. command=links_scale_lautstärke_change)
  86. linksScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
  87. # -------- FREQUENZ ------------------------
  88. linksLabelFrequenz = Label(linkerFrame, text="Frequenz [kHz]")
  89. linksLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
  90. linksScaleFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  91. command=links_scale_frequenz_change)
  92. linksScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
  93. # ----------- ABTRENNSTRICH ----------------
  94. linksSeparator = Separator(linkerFrame, orient="horizontal")
  95. linksSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
  96. # ----------- RAUSCHEN --------------------
  97. linksLabelRauschenLautstärke = Label(linkerFrame, text="Rauschen Lautstärke %", anchor="w")
  98. linksLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
  99. linksScaleRauschenLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
  100. command=links_scale_rauschen_lautstärke_change)
  101. linksScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
  102. linksLabelRauschenMittelFrequenz = Label(linkerFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
  103. linksLabelRauschenMittelFrequenz .grid(column=0, row=4)
  104. linksScaleRauschenMittelFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  105. command=links_scale_rauschen_mittelfrequenz_change)
  106. linksScaleRauschenMittelFrequenz.grid(column=1, row=4)
  107. linksLabelRauschenBandbreite= Label(linkerFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
  108. linksLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
  109. linksScaleRauschenBandbreite = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  110. command=links_scale_rauschen_bandbreite_change)
  111. linksScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
  112. """----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
  113. rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
  114. rechterFrame.grid(column=2, row=0, sticky=(N + E + W))
  115. # Variablen Rechts
  116. rechtsFrequenz = DoubleVar()
  117. rechtsRauschenLautstärke = DoubleVar()
  118. rechtsRauschenFrequenzband = DoubleVar()
  119. rechtsLautstärke = DoubleVar()
  120. # ------------------ LAUTSTÄRKE ------------------
  121. rechtsLabelLautstärke = Label(rechterFrame, text="Lautstärke [%]:")
  122. rechtsLabelLautstärke.grid(column=0, row=0, sticky=W)
  123. rechtsScaleLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
  124. command=rechts_scale_lautstärke_change)
  125. rechtsScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
  126. # -------- FREQUENZ ------------------------
  127. rechtsLabelFrequenz = Label(rechterFrame, text="Frequenz [kHz]")
  128. rechtsLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
  129. rechtsScaleFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  130. command=rechts_scale_frequenz_change)
  131. rechtsScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
  132. # ----------- ABTRENNSTRICH ----------------
  133. rechtsSeparator = Separator(rechterFrame, orient="horizontal")
  134. rechtsSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
  135. # ----------- RAUSCHEN --------------------
  136. rechtsLabelRauschenLautstärke = Label(rechterFrame, text="Rauschen Lautstärke %", anchor="w")
  137. rechtsLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
  138. rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=700,
  139. command=rechts_scale_rauschen_lautstärke_change)
  140. rechtsScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
  141. rechtsLabelRauschenMittelFrequenz = Label(rechterFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
  142. rechtsLabelRauschenMittelFrequenz .grid(column=0, row=4)
  143. rechtsScaleRauschenMittelFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  144. command=rechts_scale_rauschen_mittelfrequenz_change)
  145. rechtsScaleRauschenMittelFrequenz.grid(column=1, row=4)
  146. rechtsLabelRauschenBandbreite = Label(rechterFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
  147. rechtsLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
  148. rechtsScaleRauschenBandbreite = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=700, resolution=-1.0,
  149. command=rechts_scale_rauschen_bandbreite_change)
  150. rechtsScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
  151. """------------------------------------------------ UNTERER FRAME----------------------------------------------------"""
  152. untererFrame = LabelFrame(root, text="Generelles", border=10)
  153. untererFrame.grid(column=0, row=1, sticky=(N + W + S))
  154. vorname = StringVar() # Name des Patienten als String um den generierten Tinnitus später zuordnen zu können
  155. nachname = StringVar()
  156. kommentare = StringVar() # Ein Feld in dass der Patient noch weitere Kommentare angeben kann
  157. # Den unteren Frame füllen----------------------------------------------------------------------------------------------
  158. # --------- OHREN SYNCHRONISIEREN -----------------------
  159. untenLabelOhrenSynchro = Label(untererFrame, text="Einstellungen von ")
  160. untenLabelOhrenSynchro.grid(column=0, row=0, sticky=(N + W))
  161. untenComboOhrenSynchro = Combobox(untererFrame, values=["Linkes Ohr", "Rechtes Ohr"])
  162. untenComboOhrenSynchro.grid(column=1, row=0, sticky=(N + W + E + S))
  163. untenLabelOhrenSynchro2 = Label(untererFrame, text=" für beide übernehmen")
  164. untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S))
  165. untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen",
  166. command=unten_button_ohren_synchro)
  167. untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + W + E + S))
  168. #----------- PLAY BUTTON
  169. untenButtonPlay = Button(untererFrame, text="PLAY", font="bold", relief="raised", bg="green", fg="white",
  170. command=unten_button_play_press)
  171. untenButtonPlay.grid(column=8, row=0, sticky=(N + W + E + S))
  172. #------------STOP BUTTON-------------
  173. untenButtonStop = Button(untererFrame, text="STOP", font="bold", relief="raised", bg="red", fg="white",
  174. command=unten_button_stop_press)
  175. untenButtonStop.grid(column=9, row=0, sticky=(N + W + E + S))
  176. # ----------- ABTRENNSTRICHE ----------------
  177. untenSeparator = Separator(untererFrame, orient="horizontal")
  178. untenSeparator.grid(column=0, row=1, columnspan=10, sticky=(W + E))
  179. untenSeperator2 = Separator(untererFrame, orient="vertical")
  180. untenSeperator2.grid(column=5, rowspan=5, sticky=N+S)
  181. # ------------NAMENSEINGABE-------------
  182. untenLabelNachname = Label(untererFrame, text="Nachname:")
  183. untenLabelNachname.grid(column=0, row=2, sticky=W)
  184. untenEntryNachname = Entry(untererFrame, textvariable=nachname)
  185. untenEntryNachname.grid(column=1, row=2, sticky=W)
  186. untenLabelVorname = Label(untererFrame, text="Vorname:")
  187. untenLabelVorname.grid(column=0, row=3, sticky=W)
  188. untenEntryVorname = Entry(untererFrame, textvariable=vorname)
  189. untenEntryVorname.grid(column=1, row=3, sticky=W)
  190. # ------------ KOMMENTAR ----------------
  191. untenLabelKommentar = Label(untererFrame, text="weitere Kommentare:")
  192. untenLabelKommentar.grid(column=0, row=4, sticky=W)
  193. untenTextKommentar = Text(untererFrame, height=10, width=50) # create a field where u can enter text
  194. untenTextKommentar.grid(column=1, row=4, columnspan=3, rowspan=3)
  195. # ----------- SPEICHERN --------------------
  196. untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold",
  197. command=unten_button_speichern_press)
  198. untenButtonSpeichern.grid(column=4, row=6, sticky=S)
  199. # todo: , relief="raised" für play button
  200. root.mainloop()