[big update] 4 Unterteilungsfenster mit einigen weiteren Buttons

Unterteilung in die 4 Fenster; "linkes Ohr, rechtes Ohr, beide Ohren, generelles".

Hinzufügen einiger Widgets die mir sinnvoll erscheinen.
Hinter den widgets stecken bisher fast keine Funktionen! Es sind nur leere Buttons bisher

Außerdem hinzufügen zweier Bildedateien die als Icon dienen könnten
This commit is contained in:
seyffejn 2020-06-03 20:38:41 +02:00
parent 3e01838491
commit 38b91490a3
7 changed files with 156 additions and 122 deletions

View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.5" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">

View File

@ -8,10 +8,12 @@
<w>lautstärke</w>
<w>linkem</w>
<w>linkes</w>
<w>nachname</w>
<w>ohren</w>
<w>rauschen</w>
<w>rechtem</w>
<w>rechtes</w>
<w>vorname</w>
</words>
</dictionary>
</component>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5 (TinnitusAnalyse)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5" project-jdk-type="Python SDK" />
</project>

View File

@ -1,7 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<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/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$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -9,21 +15,12 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<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="42840">
<caret line="2522" column="16" selection-start-line="2522" selection-start-column="16" selection-end-line="2522" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
<leaf>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="357">
<caret line="21" selection-start-line="21" selection-end-line="21" />
<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>
@ -32,8 +29,12 @@
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="281">
<caret line="552" selection-start-line="552" selection-end-line="552" />
</state>
</provider>
</entry>
</file>
</leaf>
@ -46,6 +47,11 @@
</option>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>ttk</find>
<find>mainFrame</find>
<find>linkerFrame</find>
</findStrings>
<dirStrings>
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
</dirStrings>
@ -60,7 +66,7 @@
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="321" />
<option name="y" value="274" />
<option name="width" value="1602" />
@ -71,24 +77,12 @@
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="TinnitusAnalyse" type="b2602c69:ProjectViewProjectNode" />
<item name="TinnitusAnalyse" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
<panes />
</component>
<component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="restartRequiresConfirmation" value="false" />
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component>
<component name="RecentsManager">
@ -150,14 +144,15 @@
<servers />
</component>
<component name="ToolWindowManager">
<frame x="321" y="274" width="1602" height="1093" extended-state="0" />
<frame x="-8" y="-8" width="2576" height="1416" extended-state="6" />
<editor active="true" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.29987213" />
<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="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" weight="0.30625" />
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.30553392" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@ -170,22 +165,48 @@
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
<layout-to-restore>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.18479118" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<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="Debug" order="3" weight="0.4" />
<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="TODO" order="6" />
<window_info anchor="bottom" id="Version Control" order="7" />
<window_info anchor="bottom" id="Terminal" order="8" />
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
<window_info anchor="bottom" id="Python Console" order="10" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout-to-restore>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<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="42840">
<state relative-caret-position="809">
<caret line="2522" column="16" selection-start-line="2522" selection-start-column="16" selection-end-line="2522" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.idea/TinnitusAnalyse.iml">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/ttk.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="281">
<caret line="552" selection-start-line="552" selection-end-line="552" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="357">
<caret line="21" selection-start-line="21" selection-end-line="21" />
<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>

BIN
TinnitusAnalyse/27130.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

View File

@ -1,12 +1,7 @@
from tkinter import * # all the classic tkinter stuff
from tkinter import ttk # some newer additional widgets
"""
Background Funktionen
"""
from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow
# FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------------------------------------
def button_rauschen_minus_press():
print("Rauschen_Press_Plus pressed")
@ -20,9 +15,11 @@ def button_rauschen_plus_press():
def button_linkes_ohr_press():
print("button linkes ohr pressed")
def button_beide_ohren_press():
print("button beide ohren pressed")
def button_rechtes_ohr_press():
print("button rechtes ohr pressed")
@ -32,94 +29,108 @@ def scale_lautstärke_change(self):
lautstärke = float(scaleLautstärke.get())
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 ----------------------------------------------------------------------------------------------
root = Tk() # build the main window
root.title("Tinnitus Analyse")
#root.iconbitmap('headphones.ico') #todo: fix icon
root.minsize(width=800, height=600)
root.resizable(True, True)
#root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1) # extra platz nach unten wird automatisch von Frames eingenommen
# MainFrame
mainFrame = ttk.Frame(root, padding="3 3 30 30") # parent is root, padding is extra space at the edges
mainFrame.grid(column=0, row=0, sticky=(N, W, E, S)) # the frame sticks to every side of the window when resized
# Frequenz
labelFrequenz = Label(mainFrame, text="Frequenz [kHz]")
labelFrequenz.grid(row=0, column=0, sticky="w") # sticky = w(est) makes the text left aligned
# DIE DREI OBEREN FRAMES AUFBAUEN---------------------------------------------------------------------------------------
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.grid(column=0, row=0, sticky=(N + W + E + S)) # the frame sticks to every side of the window when resized
frequenz = StringVar() # Frequenz Variable [kHz]
entryFrequenz = ttk.Entry(mainFrame, width=7, textvariable=frequenz) # create a field where u can enter text
entryFrequenz.grid(column=1, row=0, sticky=(W, E)) # position the field
# todo: Failproof the entry field to just numbers between a range!
# todo: add function to entry change!
mittlererFrame = LabelFrame(root, text="beide Ohren", width=100, height=100, padding="3 3 30 30")
mittlererFrame.grid(column=1, row=0, sticky=(N + W + E + S))
# Rauschen
labelRauschen = Label(mainFrame, text="Rauschen [+/- kHz]", anchor="w")
labelRauschen.grid(column=0, row=1, sticky="w")
rechterFrame = LabelFrame(root, text="rechtes Ohr", width=100, height=100, padding="3 3 30 30")
rechterFrame.grid(column=2, row=0, sticky=(N + W + E + S))
buttonRauschenPlus = Button(mainFrame, text="+", command=button_rauschen_plus_press)
buttonRauschenPlus.grid(column=1, row=1)
buttonRauschenMinus = Button(mainFrame, text="-", command=button_rauschen_minus_press)
buttonRauschenMinus.grid(column=2, row=1)
# DIE DREI OBEREN FRAMES FÜLLEN-----------------------------------------------------------------------------------------
labelFrames = [linkerFrame, mittlererFrame, rechterFrame]
for aktLabelFrame in labelFrames:
# -------- FREQUENZ ------------------------
labelFrequenz = Label(aktLabelFrame, text="Frequenz [kHz]")
labelFrequenz.grid(row=0, column=0, sticky=W) # sticky = w(est) makes the text left aligned
frequenz = DoubleVar() # Frequenz Variable [kHz]
entryFrequenz = Entry(aktLabelFrame, textvariable=frequenz) # create a field where u can enter text
entryFrequenz.grid(column=1, row=0, sticky=W) # position the field
# todo: Failproof the entry field to just numbers between a range!
# todo: add function to entry change!
# ----------- RAUSCHEN --------------------
# todo: iwas überlegen ich brauch 3 verschiedene stringVars eigentlich für jedes Ohr!!!
# todo: add function to entry change
labelRauschen = Label(aktLabelFrame, text="Rauschen[+/- kHz]", anchor="w")
labelRauschen.grid(column=0, row=1, sticky=W)
buttonRauschenPlus = Button(aktLabelFrame, text="+", command=button_rauschen_plus_press)
buttonRauschenPlus.grid(column=2, row=1)
buttonRauschenMinus = Button(aktLabelFrame, text="-", command=button_rauschen_minus_press)
buttonRauschenMinus.grid(column=3, row=1)
rauschen = StringVar() # Rauschen Variable [+/- kHz]
entryRauschen = Entry(aktLabelFrame, textvariable=rauschen) # create a field where u can enter text
entryRauschen.grid(column=1, row=1, sticky=W) # position the field
# ------------------ LAUTSTÄRKE ------------------
labelLautstärke = Label(aktLabelFrame, text="Lautstärke [%]:")
labelLautstärke.grid(column=0, row=3, sticky="w")
scaleLautstärke = Scale(aktLabelFrame, from_=0, to=100, orient=HORIZONTAL, length=200, command=scale_lautstärke_change)
scaleLautstärke.grid(column=1, row=3, columnspan=2)
# ------------ KOMMENTAR ----------------
labelKommentar = Label(aktLabelFrame, text="weitere Kommentare:")
labelKommentar.grid(column=0, row=4)
kommentar = StringVar() # Rauschen Variable [+/- kHz]
entryKommentar = Entry(aktLabelFrame, textvariable=kommentar, width=33) # create a field where u can enter text
entryKommentar.grid(column=1, row=4, rowspan=4, columnspan=2, sticky=W)
rauschen = StringVar() # Rauschen Variable [+/- kHz]
entryRauschen = ttk.Entry(mainFrame, width=7, textvariable=rauschen) # create a field where u can enter text
entryRauschen.grid(column=3, row=1) # position the field
# todo: add function to entry change
# Linkes / Rechts Ohr
labelOhren = Label(mainFrame, text="Audioausgabe auf:")
labelOhren.grid(column=0, row=2, sticky="w")
# DEN UNTEREN FRAME BAUEN-----------------------------------------------------------------------------------------------
untererFrame = LabelFrame(root, text="Generelles", width=300, height=100, padding="3 3 30 30")
untererFrame.grid(column=0, row=1, columnspan=3, sticky=(N + W + E + S))
buttonLinkesOhr = Button(mainFrame, text="linkem Ohr", command=button_linkes_ohr_press)
buttonLinkesOhr.grid(column=1, row=2)
# DEN UNTEREN FRAME FÜLLEN----------------------------------------------------------------------------------------------
# ------------NAMENSEINGABE-------------
labelNachname = Label(untererFrame, text="Nachname:")
labelNachname.grid(column=0, row=0)
nachname = StringVar()
entryNachname = Entry(untererFrame, textvariable=nachname)
entryNachname.grid(column=1, row=0)
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 -----------------------
labelOhrenSynchro = Label(untererFrame, text="Einstellungen von ")
labelOhrenSynchro.grid(column=0, row=2)
comboOhrenSynchro = Combobox(untererFrame, values=["Linkes Ohr", "Rechtes Ohr", "Beide Ohren"])
comboOhrenSynchro.grid(column=1, row=2)
labelOhrenSynchro2 = Label(untererFrame, text=" für alle anderen Ohren übernehmen")
labelOhrenSynchro2.grid(column=2, row=2)
buttonOhrenSynchro = Button(untererFrame, text="Bestätigen", command=button_ohren_synchro)
buttonOhrenSynchro.grid(column=3, row=2)
buttonBeideOhren = Button(mainFrame, text="beiden Ohren", command=button_beide_ohren_press)
buttonBeideOhren.grid(column=2, row=2)
buttonRechtesOhr = Button(mainFrame, text="rechtem Ohr", command=button_rechtes_ohr_press)
buttonRechtesOhr.grid(column=3, row=2)
# Lautstärke
labelLautstärke = Label(mainFrame, text="Lautstärke [%]:")
labelLautstärke.grid(column=0, row=3)
scaleLautstärke = Scale(mainFrame, from_=0, to=100, orient=HORIZONTAL, length=200, command=scale_lautstärke_change)
scaleLautstärke.grid(column=1, row=3, columnspan=2)
# ----------- SPEICHERN --------------------
buttonSpeichern = Button(untererFrame, text="SPEICHERN")
buttonSpeichern.grid(column=6, row=3)
# --------------EXAMPLE GUI----------------------
# mainframe = ttk.Frame(root, padding="3 3 3 3") # parent is root, padding is extra space at the edges
# mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) # the frame sticks to every side of the window when resized
# root.columnconfigure(0, weight=1) # if the main window is resized, the frame should expand to take up the extra space
# root.rowconfigure(0, weight=1) # if the main window is resized, the frame should expand to take up the extra space
#
# frequency = StringVar() # a StringVar is meant to be used to edit Tkinter widget's texts
# meters = StringVar()
#
# """
# Frequency Entry
# """
# frequency_entry = ttk.Entry(mainframe, width=7, textvariable=frequency) # create a field where u can enter text
# frequency_entry.grid(column=2, row=1, sticky=(W, E)) # position the field
# ttk.Label(mainframe, text="Frequenz (kHz)").grid(column=1, row=1, sticky=W) # label the field
#
# """
# Rauschen
# """
# frequency_entry = ttk.Entry(mainframe, width=7, textvariable=frequency) # create a field where u can enter text
# frequency_entry.grid(column=2, row=1, sticky=(W, E)) # position the field
# ttk.Label(mainframe, text="frequency (kHz)").grid(column=1, row=1, sticky=W) # label the field
#
# ttk.Label(mainframe, textvariable=meters).grid(column=2, row=2, sticky=(W, E))
# ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=3, sticky=W)
#
# #ttk.Label(mainframe, text="frequency (kHz)").grid(column=3, row=1, sticky=W)
# ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
# ttk.Label(mainframe, text="meters").grid(column=3, row=2, sticky=W)
#
# for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
#
# frequency_entry.focus()
# root.bind('<Return>', calculate)
root.mainloop()
root.mainloop()