Umstellung auf grid anstatt place, die Frames menu_frame und plot_frame eingeführt, PID Anteile werden nicht mehr angezeigt, Diagrammgröße passt sich automatisch je nach Display an.

This commit is contained in:
2024-06-11 13:26:20 +02:00
parent f6574b75c5
commit 716563f3e0

66
main.py
View File

@@ -17,63 +17,69 @@ class T2000ErdemGUI:
def __init__(self, root): def __init__(self, root):
self.root = root self.root = root
self.root.title("T2000 Erdem") self.root.title("T2000 Erdem")
menu_frame = tk.Frame(self.root)
menu_frame.grid(row=0, column=0, rowspan=8, columnspan=2, sticky="NESW", padx=10, pady=10)
menu_frame.columnconfigure(0, weight=1)
menu_frame.rowconfigure(6, weight=1)
plot_frame = tk.Frame(self.root)
plot_frame.grid(row=0, column=2, rowspan=8, sticky="NW")
plot_frame.rowconfigure(0, weight=1)
plot_frame.columnconfigure(0, weight=1)
self.root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight())) self.root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
self.root.attributes('-fullscreen', True) # Setzt das Fenster in den Vollbildmodus self.root.attributes('-fullscreen', True) # Setzt das Fenster in den Vollbildmodus
#self.root.overrideredirect(True) # Entfernt die Fensterdekorationen (wie Minimieren, Maximieren und Schließen) #self.root.overrideredirect(True) # Entfernt die Fensterdekorationen (wie Minimieren, Maximieren und Schließen)
# P- und I-Anteil Input Felder
tk.Label(self.root, text="P-Anteil:").place(x=10, y=10)
self.p_value = tk.DoubleVar()
tk.Entry(self.root, textvariable=self.p_value).place(x=100, y=10)
tk.Label(self.root, text="I-Anteil:").place(x=10, y=50)
self.i_value = tk.DoubleVar()
tk.Entry(self.root, textvariable=self.i_value).place(x=100, y=50)
# Eingabefelder für Koordinaten der Drehmoment-Drehwinkel-Kennlinie # Eingabefelder für Koordinaten der Drehmoment-Drehwinkel-Kennlinie
tk.Label(self.root, text="Koordinaten der Drehmoment-Drehwinkel-Kennlinie:").place(x=10, y=90) tk.Label(menu_frame, text="Koordinaten der Drehmoment-Drehwinkel-Kennlinie:").grid(row=0, column=0, columnspan=2, pady=10, sticky="N")
self.coordinates_text = tk.Text(self.root, height=5, width=20) self.coordinates_text = tk.Text(menu_frame, height=10, width=20)
self.coordinates_text.place(x=20, y=110) self.coordinates_text.grid(row=1, column=0, columnspan=2, pady=10)
self.coordinates_text.insert('end', '0,0\n5,15\n10,10\n90,10') self.coordinates_text.insert('end', '0,0\n5,15\n10,10\n90,10')
# Eingabefeld für direkte Drehmomentvorgabe # Eingabefeld für direkte Drehmomentvorgabe
tk.Label(self.root, text="Soll-Drehmoment in Nm:").place(x=10, y=220) tk.Label(menu_frame, text="Soll-Drehmoment in Nm:").grid(row=2, column=0, pady=10, sticky="NW")
self.set_torque_value = tk.DoubleVar() self.set_torque_value = tk.DoubleVar()
self.torque_input = tk.Entry(self.root, textvariable=self.set_torque_value) self.torque_input = tk.Entry(menu_frame, textvariable=self.set_torque_value)
self.torque_input.place(x=200, y=220) self.torque_input.grid(row=2, column=1, sticky="NW", pady=10)
# Anzeige für aktuellen Drehwinkel und Drehmoment # Anzeige für aktuellen Drehwinkel und Drehmoment
tk.Label(self.root, text="Aktueller Drehwinkel:").place(x=10, y=260) tk.Label(menu_frame, text="Aktueller Drehwinkel:").grid(row=3, column=0, pady=10, sticky="NW")
self.current_angle = tk.Label(self.root, text="0" + " °") self.current_angle = tk.Label(menu_frame, text="0" + " °")
self.current_angle.place(x=200, y=260) self.current_angle.grid(row=3, column=1, sticky="NW", pady=10)
tk.Label(self.root, text="Aktuelles Drehmoment:").place(x=10, y=300) tk.Label(menu_frame, text="Aktuelles Drehmoment:").grid(row=4, column=0, pady=10, sticky="NW")
self.current_torque = tk.Label(self.root, text="0" + " Nm") self.current_torque = tk.Label(menu_frame, text="0" + " Nm")
self.current_torque.place(x=200, y=300) self.current_torque.grid(row=4, column=1, sticky="NW", pady=10)
# Button zum Schließen der Anwendung # Button zum Schließen der Anwendung
self.close_button = tk.Button(self.root, text="Beenden", command=self.close_application) self.close_button = tk.Button(menu_frame, text="Beenden", command=self.close_application)
self.close_button.place(x=300, y=560) self.close_button.grid(row=7, column=1, pady=10, sticky="S")
# Button zur Übernahme der Eingaben und Aktualisierung des Diagramms # Button zur Übernahme der Eingaben und Aktualisierung des Diagramms
self.plot_button = tk.Button(self.root, text="Eingaben übernehmen", command=self.on_plot_button_click) self.plot_button = tk.Button(menu_frame, text="Eingaben übernehmen", command=self.on_plot_button_click)
self.plot_button.place(x=10, y=560) self.plot_button.grid(row=7, column=0, pady=10, sticky="S")
# Schalter für Umschaltung zwischen Drehmomentprofil und direkter Vorgabe # Schalter für Umschaltung zwischen Drehmomentprofil und direkter Vorgabe
self.torque_mode = tk.BooleanVar() self.torque_mode = tk.BooleanVar()
self.torque_mode.set(False) # Startet im Modus "Drehmomentprofil" self.torque_mode.set(False) # Startet im Modus "Drehmomentprofil"
self.torque_switch = tk.Checkbutton(self.root, text="Direkte Drehmomentvorgabe aktivieren", variable=self.torque_mode, command=self.toggle_torque_mode) self.torque_switch = tk.Checkbutton(menu_frame, text="Direkte Drehmomentvorgabe aktivieren", variable=self.torque_mode, command=self.toggle_torque_mode)
self.torque_switch.place(x=10, y=340) self.torque_switch.grid(row=5, column=0, columnspan=2, pady=10)
# Diagramm # Diagramm
self.figure = Figure(figsize=(6,6), dpi=100) self.figure = Figure(dpi=100)#(figsize=(6,6), dpi=100)
self.figure.set_figheight(self.root.winfo_screenheight()/100)
self.figure.set_figwidth((self.root.winfo_screenwidth()-380)/100)
self.plot = self.figure.add_subplot(111) self.plot = self.figure.add_subplot(111)
self.plot.set_xlim(0, 90) self.plot.set_xlim(0, 90)
self.plot.set_ylim(ymin=0) self.plot.set_ylim(ymin=0)
self.plot.set_xlabel('Drehwinkel in Grad') self.plot.set_xlabel('Drehwinkel in Grad')
self.plot.set_ylabel('Drehmoment in Nm') self.plot.set_ylabel('Drehmoment in Nm')
self.canvas = FigureCanvasTkAgg(self.figure, self.root) self.canvas = FigureCanvasTkAgg(self.figure, plot_frame)
self.canvas.get_tk_widget().place(x=424, y=0) #self.canvas.get_tk_widget().grid(row=0, column=0)
self.canvas.get_tk_widget().pack(fill="both", expand=True)
self.toggle_torque_mode() self.toggle_torque_mode()
self.create_diagram() self.create_diagram()