GUI upate Feedback Funktion
Unterer rechter Labelframe hinzugefügt Die feedback Hilfsfunktion implemnentiert Mehrere Funktionen mit Feedback aufrufen versehen um dem Patienten zu erklären was abgeht (quasi ein Sprachroch für uns als Entwickler zum Benutzer)
This commit is contained in:
parent
6adced12b4
commit
3a56bacebe
5
.gitignore
vendored
5
.gitignore
vendored
@ -9,3 +9,8 @@ TinnitusAnalyse/sound.wav
|
|||||||
*.xml
|
*.xml
|
||||||
TinnitusAnalyse/.idea/workspace.xml
|
TinnitusAnalyse/.idea/workspace.xml
|
||||||
TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc
|
TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc
|
||||||
|
TinnitusAnalyse/MeinTinnitus.wav
|
||||||
|
*.xml
|
||||||
|
*.pyc
|
||||||
|
TinnitusAnalyse/.idea/dictionaries/Julian.xml
|
||||||
|
*.csv
|
||||||
|
4
TinnitusAnalyse/.idea/dictionaries/Julian.xml
generated
4
TinnitusAnalyse/.idea/dictionaries/Julian.xml
generated
@ -2,11 +2,14 @@
|
|||||||
<dictionary name="Julian">
|
<dictionary name="Julian">
|
||||||
<words>
|
<words>
|
||||||
<w>audioausgabe</w>
|
<w>audioausgabe</w>
|
||||||
|
<w>backgroundcolor</w>
|
||||||
<w>bandbreite</w>
|
<w>bandbreite</w>
|
||||||
<w>beide</w>
|
<w>beide</w>
|
||||||
<w>beiden</w>
|
<w>beiden</w>
|
||||||
<w>definieren</w>
|
<w>definieren</w>
|
||||||
|
<w>fontcolor</w>
|
||||||
<w>frequenz</w>
|
<w>frequenz</w>
|
||||||
|
<w>kommentar</w>
|
||||||
<w>kommentare</w>
|
<w>kommentare</w>
|
||||||
<w>lautstaerke</w>
|
<w>lautstaerke</w>
|
||||||
<w>lautstärke</w>
|
<w>lautstärke</w>
|
||||||
@ -25,6 +28,7 @@
|
|||||||
<w>rechter</w>
|
<w>rechter</w>
|
||||||
<w>rechtes</w>
|
<w>rechtes</w>
|
||||||
<w>rechts</w>
|
<w>rechts</w>
|
||||||
|
<w>speichere</w>
|
||||||
<w>speicherversuch</w>
|
<w>speicherversuch</w>
|
||||||
<w>variablen</w>
|
<w>variablen</w>
|
||||||
<w>vorname</w>
|
<w>vorname</w>
|
||||||
|
85
TinnitusAnalyse/.idea/workspace.xml
generated
85
TinnitusAnalyse/.idea/workspace.xml
generated
@ -2,9 +2,8 @@
|
|||||||
<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$/../.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/../.gitignore" 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/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$/DigitalFilter.py" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/SoundGenerator.py" beforeDir="false" afterPath="$PROJECT_DIR$/SoundGenerator.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/SoundGenerator.py" beforeDir="false" afterPath="$PROJECT_DIR$/SoundGenerator.py" 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" />
|
||||||
<change beforePath="$PROJECT_DIR$/TinnitusDaten.csv" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusDaten.csv" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/TinnitusDaten.csv" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusDaten.csv" afterDir="false" />
|
||||||
@ -17,11 +16,11 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file pinned="false" current-in-tab="false">
|
<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="805">
|
<state relative-caret-position="248">
|
||||||
<caret line="122" lean-forward="true" selection-start-line="122" selection-end-line="122" />
|
<caret line="155" lean-forward="true" selection-start-line="155" selection-end-line="155" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#117#0" expanded="true" />
|
<element signature="e#0#117#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -32,17 +31,17 @@
|
|||||||
<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/__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="26435">
|
<state relative-caret-position="874">
|
||||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="520">
|
<state relative-caret-position="729">
|
||||||
<caret line="62" column="32" lean-forward="true" selection-start-line="62" selection-start-column="32" selection-end-line="62" selection-end-column="32" />
|
<caret line="96" column="24" lean-forward="true" selection-start-line="96" selection-start-column="24" selection-end-line="96" selection-end-column="24" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#11#0" expanded="true" />
|
<element signature="e#0#11#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -93,6 +92,10 @@
|
|||||||
<find>Sound(</find>
|
<find>Sound(</find>
|
||||||
<find>700</find>
|
<find>700</find>
|
||||||
<find>nachname</find>
|
<find>nachname</find>
|
||||||
|
<find>400</find>
|
||||||
|
<find>500</find>
|
||||||
|
<find>Text</find>
|
||||||
|
<find>name</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
<dirStrings>
|
<dirStrings>
|
||||||
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
|
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
|
||||||
@ -287,8 +290,8 @@
|
|||||||
<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 anchor="bottom" id="Run" order="2" weight="0.2548714" />
|
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.2548714" />
|
||||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.39977604" />
|
<window_info anchor="bottom" id="Debug" order="3" weight="0.3990647" />
|
||||||
<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" />
|
||||||
@ -325,13 +328,9 @@
|
|||||||
<provider selected="true" editor-type-id="text-editor" />
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/WriteToCSV.py" />
|
<entry file="file://$PROJECT_DIR$/WriteToCSV.py" />
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
<entry file="file://$PROJECT_DIR$/DigitalFilter1.py" />
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<entry file="file://$PROJECT_DIR$/Noise Experiment.py" />
|
||||||
<state relative-caret-position="26435">
|
<entry file="file://$PROJECT_DIR$/DigitalFilter.py" />
|
||||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/matplotlib/axes/_base.py">
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/matplotlib/axes/_base.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="3349">
|
<state relative-caret-position="3349">
|
||||||
@ -346,52 +345,32 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/DigitalFilter1.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="1201">
|
<state relative-caret-position="874">
|
||||||
<caret line="81" column="28" lean-forward="true" selection-start-line="81" selection-start-column="28" selection-end-line="81" selection-end-column="28" />
|
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
||||||
<folding>
|
|
||||||
<element signature="e#0#47#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="805">
|
|
||||||
<caret line="122" lean-forward="true" selection-start-line="122" selection-end-line="122" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#117#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/Noise Experiment.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state>
|
|
||||||
<caret column="27" selection-start-column="27" selection-end-column="27" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/DigitalFilter.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="354">
|
|
||||||
<caret line="28" lean-forward="true" selection-start-line="28" selection-end-line="28" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#0#47#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="520">
|
<state relative-caret-position="729">
|
||||||
<caret line="62" column="32" lean-forward="true" selection-start-line="62" selection-start-column="32" selection-end-line="62" selection-end-column="32" />
|
<caret line="96" column="24" lean-forward="true" selection-start-line="96" selection-start-column="24" selection-end-line="96" selection-end-column="24" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#11#0" expanded="true" />
|
<element signature="e#0#11#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</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="248">
|
||||||
|
<caret line="155" lean-forward="true" selection-start-line="155" selection-end-line="155" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#0#117#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -49,7 +49,7 @@ Sound beinhaltet alle Variablen, die zum erstellen einer .wav-Datei benötigt we
|
|||||||
|
|
||||||
|
|
||||||
class Sound:
|
class Sound:
|
||||||
def __init__(self, tinnitus, name="sound.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100,
|
def __init__(self, tinnitus, name="MeinTinnitus.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100,
|
||||||
comptype="NONE", compname="not compressed", mute=True):
|
comptype="NONE", compname="not compressed", mute=True):
|
||||||
if audio is None:
|
if audio is None:
|
||||||
audio = []
|
audio = []
|
||||||
@ -70,7 +70,6 @@ class Sound:
|
|||||||
def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei
|
def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei
|
||||||
wav_file = wave.open(self.name, "w")
|
wav_file = wave.open(self.name, "w")
|
||||||
print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern")
|
print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern")
|
||||||
|
|
||||||
# zuerst muss ein Array mit Audiodaten gefüllt werden
|
# zuerst muss ein Array mit Audiodaten gefüllt werden
|
||||||
audio = []
|
audio = []
|
||||||
freq = self.tinnitus.linksFrequenz
|
freq = self.tinnitus.linksFrequenz
|
||||||
|
@ -2,7 +2,7 @@ from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Check
|
|||||||
from tkinter import *
|
from tkinter import *
|
||||||
from SoundGenerator import *
|
from SoundGenerator import *
|
||||||
import csv
|
import csv
|
||||||
|
import time
|
||||||
|
|
||||||
"""--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
|
"""--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------"""
|
||||||
"""-------Funktionen links-------------"""
|
"""-------Funktionen links-------------"""
|
||||||
@ -75,7 +75,7 @@ def rechts_scale_rauschen_bandbreite_change(self):
|
|||||||
|
|
||||||
|
|
||||||
def unten_button_ohren_synchro():
|
def unten_button_ohren_synchro():
|
||||||
auswahl = untenComboOhrenSynchro.get() # holt die momentane Auswahl aus combobox
|
auswahl = untenComboOhrenSynchro.get() # holt die momentane Auswahl aus combobox
|
||||||
print("Einstellungen von:" + auswahl + " das auf das jeweils andere Ohr setzen")
|
print("Einstellungen von:" + auswahl + " das auf das jeweils andere Ohr setzen")
|
||||||
|
|
||||||
if auswahl == "Linkes Ohr": # linkes --> rechts
|
if auswahl == "Linkes Ohr": # linkes --> rechts
|
||||||
@ -84,6 +84,7 @@ def unten_button_ohren_synchro():
|
|||||||
rechtsScaleRauschenLautstärke.set(linksScaleRauschenLautstärke.get())
|
rechtsScaleRauschenLautstärke.set(linksScaleRauschenLautstärke.get())
|
||||||
rechtsScaleRauschenMittelFrequenz.set(linksScaleRauschenMittelFrequenz.get())
|
rechtsScaleRauschenMittelFrequenz.set(linksScaleRauschenMittelFrequenz.get())
|
||||||
rechtsScaleRauschenBandbreite.set(linksScaleRauschenBandbreite.get())
|
rechtsScaleRauschenBandbreite.set(linksScaleRauschenBandbreite.get())
|
||||||
|
feedback("Einstellungen vom linken Ohr auf beide Ohren übertragen", "white", "blue")
|
||||||
|
|
||||||
if auswahl == "Rechtes Ohr": # rechts --> links
|
if auswahl == "Rechtes Ohr": # rechts --> links
|
||||||
linksScaleLautstärke.set(rechtsScaleLautstärke.get())
|
linksScaleLautstärke.set(rechtsScaleLautstärke.get())
|
||||||
@ -91,6 +92,7 @@ def unten_button_ohren_synchro():
|
|||||||
linksScaleRauschenLautstärke.set(rechtsScaleRauschenLautstärke.get())
|
linksScaleRauschenLautstärke.set(rechtsScaleRauschenLautstärke.get())
|
||||||
linksScaleRauschenMittelFrequenz.set(rechtsScaleRauschenMittelFrequenz.get())
|
linksScaleRauschenMittelFrequenz.set(rechtsScaleRauschenMittelFrequenz.get())
|
||||||
linksScaleRauschenBandbreite.set(rechtsScaleRauschenBandbreite.get())
|
linksScaleRauschenBandbreite.set(rechtsScaleRauschenBandbreite.get())
|
||||||
|
feedback("Einstellungen vom rechten Ohr auf beide Ohren übertragen", "white", "blue")
|
||||||
|
|
||||||
|
|
||||||
def unten_button_speichern_press():
|
def unten_button_speichern_press():
|
||||||
@ -101,40 +103,68 @@ def unten_button_speichern_press():
|
|||||||
nachname.set("Erst Namen..")
|
nachname.set("Erst Namen..")
|
||||||
vorname.set("..eintragen bitte")
|
vorname.set("..eintragen bitte")
|
||||||
print("fehlgeschlagener Speicherversuch - Keine Eingaben gemacht")
|
print("fehlgeschlagener Speicherversuch - Keine Eingaben gemacht")
|
||||||
|
feedback("Fehlgeschlagener Speicherversuch! Mögliche Gründe: Erst Namen links eintragen.", "yellow", "red")
|
||||||
|
feedback("Falls es danach immer noch nicht geht, bitte Microsoft Excel schließen.", "yellow", "red")
|
||||||
else:
|
else:
|
||||||
tinnitus.vorname = untenEntryVorname.get()
|
try:
|
||||||
tinnitus.nachname = untenEntryNachname.get()
|
feedback("Speichere Sound als .wav Datei . Kann bis zu 30 Sekunden dauern. Bitte warten...", "white", "blue")
|
||||||
tinnitus.kommentar = untenTextKommentar.get("1.0", END)
|
# todo: warum auch immer, aber irgendwie wird feedback nach wav_speichern ausgeführt
|
||||||
print("Speichere Patientendaten, siehe TinnitusDaten.csv")
|
tinnitus.vorname = untenEntryVorname.get()
|
||||||
tinnitus.speichern()
|
tinnitus.nachname = untenEntryNachname.get()
|
||||||
sound.wav_speichern()
|
tinnitus.kommentar = untenTextKommentar.get("1.0", END)
|
||||||
|
tinnitus.speichern()
|
||||||
|
sound.wav_speichern()
|
||||||
|
feedback("Daten erfolgreich gespeichert. Siehe: 'MeinTinnitus.wav' ", "white", "blue")
|
||||||
|
except:
|
||||||
|
feedback("Fehlgeschlagener Speicherversuch! Mögliche Gründe: Erst Namen links eintragen.", "yellow", "red")
|
||||||
|
feedback("Falls es danach immer noch nicht geht, bitte Microsoft Excel schließen.", "yellow", "red")
|
||||||
|
|
||||||
|
|
||||||
def unten_button_play_press():
|
def unten_button_play_press():
|
||||||
print("button play pressed -> mute=false")
|
print("button play pressed")
|
||||||
sound.mute = False
|
feedback("Starte Audioausgabe...", "white", "green")
|
||||||
|
sound.mute = False # when this boolean is set to false no audio can ever play (it`s like a savety switch)
|
||||||
sound.play()
|
sound.play()
|
||||||
|
|
||||||
|
|
||||||
def unten_button_stop_press():
|
def unten_button_stop_press():
|
||||||
print("button stop press -> mute=true")
|
print("button stop press")
|
||||||
|
feedback("Stoppe Audioausgabe", "white", "red") # place text in feedback field, fontcololor, backgroundcolor
|
||||||
sound.mute = True
|
sound.mute = True
|
||||||
sound.stop()
|
sound.stop()
|
||||||
|
|
||||||
|
|
||||||
""""""
|
def feedback(text, fontcolor, backgroundcolor):
|
||||||
tinnitus = Tinnitus()
|
""" This is a helper function. You can give it a string text and it will display it in the feedback frame (bottom
|
||||||
sound = Sound(tinnitus)
|
right of the GUI) in the text widget. The parameter color is also a string and defines the font color. Same with
|
||||||
print("test")
|
background. Honestly this function is way too complicated, but Tkinter has no nicer/easier builtin way of doing the
|
||||||
|
coloring nicely """
|
||||||
|
feedback.lineCounter += 1 # in order to color the texts nicely we need to count the lines of text we add
|
||||||
|
untenFeedbackText.config(state=NORMAL) # activate text field (otherwise it is readonly)
|
||||||
|
|
||||||
|
if feedback.lineCounter == 12: # if we reached the end of the text box
|
||||||
|
untenFeedbackText.delete("1.0", END) # just delete everything
|
||||||
|
feedback.lineCounter = 1 # and start at line 1 again
|
||||||
|
|
||||||
|
untenFeedbackText.insert(INSERT, text + "\n") # insert the text
|
||||||
|
# these 2 lines just color the text nicely, but Tkinter forces your to first "tag_add" mark it and specify the
|
||||||
|
# line number and char number you want to mark. And then "tag_config" change the color of this marked region
|
||||||
|
untenFeedbackText.tag_add("Line"+str(feedback.lineCounter), str(feedback.lineCounter)+".0", str(float(len(text))))
|
||||||
|
untenFeedbackText.tag_config("Line"+str(feedback.lineCounter), foreground=fontcolor, background=backgroundcolor)
|
||||||
|
|
||||||
|
untenFeedbackText.config(state=DISABLED) # set the text field back to readonly
|
||||||
|
|
||||||
|
|
||||||
|
""" Initialisierungen """
|
||||||
|
tinnitus = Tinnitus() # siehe SoundGenerator.py
|
||||||
|
sound = Sound(tinnitus) # siehe SoundGenerator.py
|
||||||
|
feedback.lineCounter = 0 # Funktionsvariable der Feedback funktion. Ein Funktionsaufruf Counter
|
||||||
|
|
||||||
"""------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------"""
|
"""------------------------------------------ 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.minsize(width=800, height=500) # set windowsize (width an height in pixels)
|
||||||
root.minsize(width=800, height=500)
|
root.resizable(False, False) # window not resizable (x and y)
|
||||||
root.resizable(True, True)
|
|
||||||
root.columnconfigure(0, weight=1)
|
|
||||||
root.columnconfigure(1, weight=1)
|
|
||||||
root.rowconfigure(0, weight=1)
|
|
||||||
|
|
||||||
|
|
||||||
"""------------------------------------------LINKER FRAME------------------------------------------------------------"""
|
"""------------------------------------------LINKER FRAME------------------------------------------------------------"""
|
||||||
@ -150,14 +180,14 @@ linksRauschenFrequenzband = DoubleVar()
|
|||||||
# ------------------ LAUTSTÄRKE ------------------
|
# ------------------ LAUTSTÄRKE ------------------
|
||||||
linksLabelLautstärke = Label(linkerFrame, text="Lautstärke [%]:")
|
linksLabelLautstärke = Label(linkerFrame, text="Lautstärke [%]:")
|
||||||
linksLabelLautstärke.grid(column=0, row=0, sticky=W)
|
linksLabelLautstärke.grid(column=0, row=0, sticky=W)
|
||||||
linksScaleLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=400,
|
linksScaleLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=600,
|
||||||
command=links_scale_lautstärke_change)
|
command=links_scale_lautstärke_change)
|
||||||
linksScaleLautstärke.grid(column=1, row=0, sticky=N+S+W+E)
|
linksScaleLautstärke.grid(column=1, row=0, sticky=N+S+W+E)
|
||||||
|
|
||||||
# -------- FREQUENZ ------------------------
|
# -------- FREQUENZ ------------------------
|
||||||
linksLabelFrequenz = Label(linkerFrame, text="Frequenz [kHz]")
|
linksLabelFrequenz = Label(linkerFrame, text="Frequenz [kHz]")
|
||||||
linksLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
|
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=400, resolution=-1.0,
|
linksScaleFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=links_scale_frequenz_change)
|
command=links_scale_frequenz_change)
|
||||||
linksScaleFrequenz.grid(column=1, row=1, sticky=(W+E))
|
linksScaleFrequenz.grid(column=1, row=1, sticky=(W+E))
|
||||||
|
|
||||||
@ -168,26 +198,26 @@ linksSeparator.grid(column=0, row=2, sticky=(W + E), columnspan=3)
|
|||||||
# ----------- RAUSCHEN --------------------
|
# ----------- RAUSCHEN --------------------
|
||||||
linksLabelRauschenLautstärke = Label(linkerFrame, text="Rauschen Lautstärke %", anchor="w")
|
linksLabelRauschenLautstärke = Label(linkerFrame, text="Rauschen Lautstärke %", anchor="w")
|
||||||
linksLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
|
linksLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
|
||||||
linksScaleRauschenLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=400,
|
linksScaleRauschenLautstärke = Scale(linkerFrame, from_=0, to=100, orient=HORIZONTAL, length=600,
|
||||||
command=links_scale_rauschen_lautstärke_change)
|
command=links_scale_rauschen_lautstärke_change)
|
||||||
linksScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
linksScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
||||||
|
|
||||||
linksLabelRauschenMittelFrequenz = Label(linkerFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
linksLabelRauschenMittelFrequenz = Label(linkerFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
||||||
linksLabelRauschenMittelFrequenz .grid(column=0, row=4, sticky=(W+E))
|
linksLabelRauschenMittelFrequenz .grid(column=0, row=4, sticky=(W+E))
|
||||||
linksScaleRauschenMittelFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=400, resolution=-1.0,
|
linksScaleRauschenMittelFrequenz = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=links_scale_rauschen_mittelfrequenz_change)
|
command=links_scale_rauschen_mittelfrequenz_change)
|
||||||
linksScaleRauschenMittelFrequenz.grid(column=1, row=4, sticky=(W+E))
|
linksScaleRauschenMittelFrequenz.grid(column=1, row=4, sticky=(W+E))
|
||||||
|
|
||||||
linksLabelRauschenBandbreite= Label(linkerFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
linksLabelRauschenBandbreite= Label(linkerFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
||||||
linksLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
linksLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
||||||
linksScaleRauschenBandbreite = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=400, resolution=-1.0,
|
linksScaleRauschenBandbreite = Scale(linkerFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=links_scale_rauschen_bandbreite_change)
|
command=links_scale_rauschen_bandbreite_change)
|
||||||
linksScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
linksScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
||||||
|
|
||||||
|
|
||||||
"""----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
|
"""----------------------------------------------RECHTER FRAME-------------------------------------------------------"""
|
||||||
rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
|
rechterFrame = LabelFrame(root, text="Rechtes Ohr", font="bold")
|
||||||
rechterFrame.grid(column=2, row=0, sticky=(N+E+W+S))
|
rechterFrame.grid(column=1, row=0, sticky=(N+E+W+S))
|
||||||
|
|
||||||
|
|
||||||
# Variablen Rechts
|
# Variablen Rechts
|
||||||
@ -199,14 +229,14 @@ rechtsLautstärke = DoubleVar()
|
|||||||
# ------------------ LAUTSTÄRKE ------------------
|
# ------------------ LAUTSTÄRKE ------------------
|
||||||
rechtsLabelLautstärke = Label(rechterFrame, text="Lautstärke [%]:")
|
rechtsLabelLautstärke = Label(rechterFrame, text="Lautstärke [%]:")
|
||||||
rechtsLabelLautstärke.grid(column=0, row=0, sticky=W)
|
rechtsLabelLautstärke.grid(column=0, row=0, sticky=W)
|
||||||
rechtsScaleLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=400,
|
rechtsScaleLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=600,
|
||||||
command=rechts_scale_lautstärke_change)
|
command=rechts_scale_lautstärke_change)
|
||||||
rechtsScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
|
rechtsScaleLautstärke.grid(column=1, row=0, columnspan=10, sticky=W)
|
||||||
|
|
||||||
# -------- FREQUENZ ------------------------
|
# -------- FREQUENZ ------------------------
|
||||||
rechtsLabelFrequenz = Label(rechterFrame, text="Frequenz [kHz]")
|
rechtsLabelFrequenz = Label(rechterFrame, text="Frequenz [kHz]")
|
||||||
rechtsLabelFrequenz.grid(column=0, row=1, sticky=W) # sticky = w(est) makes the text left aligned
|
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=400, resolution=-1.0,
|
rechtsScaleFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=rechts_scale_frequenz_change)
|
command=rechts_scale_frequenz_change)
|
||||||
rechtsScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
|
rechtsScaleFrequenz.grid(column=1, row=1, columnspan=10, sticky=(W+E))
|
||||||
|
|
||||||
@ -217,26 +247,26 @@ rechtsSeparator.grid(column=0, row=2, columnspan=10, sticky=(W + E))
|
|||||||
# ----------- RAUSCHEN --------------------
|
# ----------- RAUSCHEN --------------------
|
||||||
rechtsLabelRauschenLautstärke = Label(rechterFrame, text="Rauschen Lautstärke %", anchor="w")
|
rechtsLabelRauschenLautstärke = Label(rechterFrame, text="Rauschen Lautstärke %", anchor="w")
|
||||||
rechtsLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
|
rechtsLabelRauschenLautstärke.grid(column=0, row=3, sticky=W)
|
||||||
rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=400,
|
rechtsScaleRauschenLautstärke = Scale(rechterFrame, from_=0, to=100, orient=HORIZONTAL, length=600,
|
||||||
command=rechts_scale_rauschen_lautstärke_change)
|
command=rechts_scale_rauschen_lautstärke_change)
|
||||||
rechtsScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
rechtsScaleRauschenLautstärke.grid(column=1, row=3, sticky=(W+E))
|
||||||
|
|
||||||
rechtsLabelRauschenMittelFrequenz = Label(rechterFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
rechtsLabelRauschenMittelFrequenz = Label(rechterFrame, text="Rauschen Mittelfrequenz [kHz]", anchor="w")
|
||||||
rechtsLabelRauschenMittelFrequenz .grid(column=0, row=4)
|
rechtsLabelRauschenMittelFrequenz .grid(column=0, row=4)
|
||||||
rechtsScaleRauschenMittelFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=400, resolution=-1.0,
|
rechtsScaleRauschenMittelFrequenz = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=rechts_scale_rauschen_mittelfrequenz_change)
|
command=rechts_scale_rauschen_mittelfrequenz_change)
|
||||||
rechtsScaleRauschenMittelFrequenz.grid(column=1, row=4)
|
rechtsScaleRauschenMittelFrequenz.grid(column=1, row=4)
|
||||||
|
|
||||||
rechtsLabelRauschenBandbreite = Label(rechterFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
rechtsLabelRauschenBandbreite = Label(rechterFrame, text="Rauschen Bandbreite [kHz]", anchor="w")
|
||||||
rechtsLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
rechtsLabelRauschenBandbreite.grid(column=0, row=5, sticky=W)
|
||||||
rechtsScaleRauschenBandbreite = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=400, resolution=-1.0,
|
rechtsScaleRauschenBandbreite = Scale(rechterFrame, from_=0, to=20, orient=HORIZONTAL, length=600, resolution=-1.0,
|
||||||
command=rechts_scale_rauschen_bandbreite_change)
|
command=rechts_scale_rauschen_bandbreite_change)
|
||||||
rechtsScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
rechtsScaleRauschenBandbreite.grid(column=1, row=5, sticky=(W+E))
|
||||||
|
|
||||||
|
|
||||||
"""------------------------------------------------ UNTERER FRAME----------------------------------------------------"""
|
"""------------------------------------------------ UNTERER LINKER FRAME---------------------------------------------"""
|
||||||
untererFrame = LabelFrame(root, text="Generelles", border=10)
|
untererFrame = LabelFrame(root, text="Generelles", border=10)
|
||||||
untererFrame.grid(column=0, row=1, sticky=(N + W + S), columnspan=2)
|
untererFrame.grid(column=0, row=1, sticky=(N + W + S + E))
|
||||||
|
|
||||||
vorname = StringVar() # Name des Patienten als String um den generierten Tinnitus später zuordnen zu können
|
vorname = StringVar() # Name des Patienten als String um den generierten Tinnitus später zuordnen zu können
|
||||||
nachname = StringVar()
|
nachname = StringVar()
|
||||||
@ -293,6 +323,17 @@ untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold",
|
|||||||
untenButtonSpeichern.grid(column=4, row=6, sticky=S)
|
untenButtonSpeichern.grid(column=4, row=6, sticky=S)
|
||||||
|
|
||||||
|
|
||||||
|
"""--------------------------------------UNTERER RECHTER FRAME-------------------------------------------------------"""
|
||||||
|
|
||||||
|
untererRechterFrame = LabelFrame(root, text="Programm Feedback")
|
||||||
|
untererRechterFrame.grid(row=1, column=1, sticky=(N+S+E+W))
|
||||||
|
|
||||||
|
|
||||||
|
# ------------ PROGRAMM OUTPUT ------------
|
||||||
|
untenFeedbackText = Text(untererRechterFrame, height=13, width=85, bg="lightblue") # write feedback to patient here
|
||||||
|
#untenFeedbackText.config(state=DISABLED) # make the text widget readonly
|
||||||
|
untenFeedbackText.place(relx=.5, rely=.5, anchor="center") # the only time I used .place instead of grid, because it
|
||||||
|
# lets me place the widget in the middle of the frame
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Vorname;asdas
|
Vorname;asdad
|
||||||
Nachname;asda
|
Nachname;sada
|
||||||
linke Frequenz;1410.0
|
linke Frequenz;0.0
|
||||||
linke Lautstärke;0.03
|
linke Lautstärke;0.0
|
||||||
linkes Rauschen;0.0
|
linkes Rauschen;0.0
|
||||||
rechte Frequenz;0.0
|
rechte Frequenz;0.0
|
||||||
rechte Lautstärke;0.0
|
rechte Lautstärke;0.0
|
||||||
|
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user