Logo eingefügt.

This commit is contained in:
2024-07-23 13:31:10 +02:00
parent 7a077b4879
commit 75a1f05dc8

65
main.py
View File

@@ -1,5 +1,5 @@
import tkinter as tk
from tkinter import ttk, messagebox
from tkinter import ttk, messagebox, PhotoImage
import customtkinter
customtkinter.set_appearance_mode("light")
customtkinter.set_default_color_theme("blue")
@@ -12,6 +12,7 @@ import time
import numpy as np
import csv
import os
from PIL import Image, ImageTk
class ArduinoGUI:
def __init__(self, root):
@@ -81,75 +82,88 @@ class ArduinoGUI:
def create_widgets(self):
# Laden und Skalieren des Logos
original_image = Image.open("src/logo1.png")
resized_image = original_image.resize((500, 121), Image.LANCZOS) # Passen Sie die Größe (200, 100) nach Bedarf an
self.logo_image = ImageTk.PhotoImage(resized_image)
# Logo anstelle des Platzhalters
self.logo_label = customtkinter.CTkLabel(self.root, image=self.logo_image, text="")
self.logo_label.image = self.logo_image # Referenz behalten, um Garbage Collection zu verhindern
self.logo_label.grid(row=0, column=0, columnspan=3, padx=(10, 5), pady=(10, 0), sticky="w")
# Placeholer
self.placeholer = customtkinter.CTkLabel(self.root, text="")
self.placeholer.grid(row=1, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
# Labels and ComboBox for Stellantriebstyp
self.stellantriebstyp_label = customtkinter.CTkLabel(self.root, text="Stellantriebstyp:", font=self.my_font)
self.stellantriebstyp_label.grid(row=0, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.stellantriebstyp_label.grid(row=2, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.config_combobox_value = customtkinter.StringVar()
self.config_combobox = customtkinter.CTkComboBox(self.root, variable=self.config_combobox_value, state="readonly", font=self.my_font)
self.config_combobox.grid(row=0, column=1, columnspan=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.config_combobox.grid(row=2, column=1, columnspan=1, padx=(0, 10), pady=(10, 0), sticky="ew")
#self.config_combobox.bind("<<ComboboxSelected>>", self.on_config_selected)
# Setzen Button für Stellantriebstyp
self.set_pid_button = customtkinter.CTkButton(self.root, text="Setzen", command=self.set_pid_parameters, font=self.my_font)
self.set_pid_button.grid(row=0, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
self.set_pid_button.grid(row=2, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
# Labels and ComboBox for COM Port
self.com_label = customtkinter.CTkLabel(self.root, text="COM Port:", font=self.my_font)
self.com_label.grid(row=1, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.com_label.grid(row=3, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.combobox_value = customtkinter.StringVar()
self.combobox = customtkinter.CTkComboBox(self.root, variable=self.combobox_value, font=self.my_font)
self.combobox.configure(values=[port.device for port in self.ports])
self.combobox.grid(row=1, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.combobox.grid(row=3, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.connect_button = customtkinter.CTkButton(self.root, text="Verbinden", command=self.connect_arduino, font=self.my_font)
self.connect_button.grid(row=1, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
self.connect_button.grid(row=3, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
# Setpoint entry
self.setpoint_label = customtkinter.CTkLabel(self.root, text="Sollwerteingabe in Nm:", font=self.my_font)
self.setpoint_label.grid(row=2, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.setpoint_label.grid(row=4, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.setpoint_entry = customtkinter.CTkEntry(self.root, font=self.my_font)
self.setpoint_entry.grid(row=2, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.setpoint_entry.grid(row=4, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.set_setpoint_button = customtkinter.CTkButton(self.root, text="Setzen", command=self.set_setpoint, font=self.my_font)
self.set_setpoint_button.grid(row=2, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
self.set_setpoint_button.grid(row=4, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
# Multi Setpoints Textbox and Button
self.multi_setpoints_label = customtkinter.CTkLabel(self.root, text="Sollwerteeingabe\n(Winkel;Drehmoment):", font=self.my_font)
self.multi_setpoints_label.grid(row=3, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.multi_setpoints_label.grid(row=5, column=0, padx=(10, 5), pady=(10, 0), sticky="w")
self.multi_setpoints_text = customtkinter.CTkTextbox(self.root, font=self.my_font)
self.multi_setpoints_text.grid(row=3, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.multi_setpoints_text.grid(row=5, column=1, padx=(0, 10), pady=(10, 0), sticky="ew")
self.send_multi_setpoints_button = customtkinter.CTkButton(self.root, text="Sollwerte senden", command=self.send_multi_setpoints, font=self.my_font)
self.send_multi_setpoints_button.grid(row=3, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
self.send_multi_setpoints_button.grid(row=5, column=2, padx=(0, 10), pady=(10, 0), sticky="ew")
# Analog Control CheckBox
self.checkbox_var = customtkinter.IntVar()
self.checkbox = customtkinter.CTkCheckBox(self.root, text="Analogsteuerung", variable=self.checkbox_var, command=self.input_source_Switch, font=self.my_font)
self.checkbox.grid(row=4, column=0, columnspan=3, padx=(10, 10), pady=(10, 0), sticky="w")
self.checkbox.grid(row=6, column=0, columnspan=3, padx=(10, 10), pady=(10, 0), sticky="w")
# Tare and Demagnetize Buttons
self.tare_button = customtkinter.CTkButton(self.root, text="Drehwinkel tarieren", command=self.tare_angle, font=self.my_font)
self.tare_button.grid(row=5, column=0, padx=(10, 5), pady=(10, 0), sticky="sew")
self.tare_button.grid(row=7, column=0, padx=(10, 5), pady=(10, 0), sticky="sew")
self.demag_button = customtkinter.CTkButton(self.root, text="Manuelle Entmagnetisierung", command=self.demagnetize, font=self.my_font)
self.demag_button.grid(row=5, column=1, padx=(0, 5), pady=(10, 0), sticky="sew")
self.demag_button.grid(row=7, column=1, padx=(0, 5), pady=(10, 0), sticky="sew")
# Exit Button
self.exit_button = customtkinter.CTkButton(self.root, text="Beenden", command=self.on_closing, font=self.my_font)
self.exit_button.grid(row=5, column=2, padx=(0, 10), pady=(10, 0), sticky="sew")
self.exit_button.grid(row=7, column=2, padx=(0, 10), pady=(10, 0), sticky="sew")
#Datalogger
self.datalogger_button = customtkinter.CTkButton(self.root, text="Datenlogger", command=self.toggle_datalogger, font=self.my_font)
self.datalogger_button.grid(row=4, column=0, padx=(0, 10), pady=(10, 0), sticky="sew")
self.datalogger_button.grid(row=6, column=2, padx=(0, 10), pady=(10, 0), sticky="sew")
# Plot
self.figure, self.ax = plt.subplots()
self.canvas = FigureCanvasTkAgg(self.figure, self.root)
self.canvas.get_tk_widget().grid(row=0, column=3, rowspan=6, columnspan=4, padx=(10, 10), pady=(10, 0), sticky="nsew")
self.canvas.get_tk_widget().grid(row=0, column=3, rowspan=8, columnspan=4, padx=(10, 10), pady=(10, 0), sticky="nsew")
self.ax.set_title("Drehmoment-Drehwinkel-Kennlinie")
self.ax.set_xlabel("Winkel (°)")
@@ -167,22 +181,22 @@ class ArduinoGUI:
self.angle_label_var = customtkinter.StringVar()
self.angle_label_var.set("Drehwinkel: 0")
self.angle_label = customtkinter.CTkLabel(self.root, textvariable=self.angle_label_var, font=self.my_font)
self.angle_label.grid(row=6, column=3, padx=(10, 5), pady=(10, 0), sticky="sw")
self.angle_label.grid(row=8, column=3, padx=(10, 5), pady=(10, 0), sticky="sw")
self.torque_label_var = customtkinter.StringVar()
self.torque_label_var.set("Istwert: 0")
self.torque_label = customtkinter.CTkLabel(self.root, textvariable=self.torque_label_var, font=self.my_font)
self.torque_label.grid(row=6, column=4, padx=(10, 5), pady=(10, 0), sticky="sw")
self.torque_label.grid(row=8, column=4, padx=(10, 5), pady=(10, 0), sticky="sw")
self.analogread_label_var = customtkinter.StringVar()
self.analogread_label_var.set("Analogeingang: 0")
self.analogread_label = customtkinter.CTkLabel(self.root, textvariable=self.analogread_label_var, font=self.my_font)
self.analogread_label.grid(row=6, column=5, padx=(10, 5), pady=(10, 0), sticky="sw")
self.analogread_label.grid(row=8, column=5, padx=(10, 5), pady=(10, 0), sticky="sw")
self.currentSetpoint_label_var = customtkinter.StringVar()
self.currentSetpoint_label_var.set("Aktueller Sollwert: 0")
self.currentSetpoint_label = customtkinter.CTkLabel(self.root, textvariable=self.currentSetpoint_label_var, font=self.my_font)
self.currentSetpoint_label.grid(row=6, column=6, padx=(10, 5), pady=(10, 0), sticky="sw")
self.currentSetpoint_label.grid(row=8, column=6, padx=(10, 5), pady=(10, 0), sticky="sw")
self.root.grid_columnconfigure(0, weight=0)
self.root.grid_columnconfigure(1, weight=0)
@@ -196,8 +210,11 @@ class ArduinoGUI:
self.root.grid_rowconfigure(2, weight=0)
self.root.grid_rowconfigure(3, weight=0)
self.root.grid_rowconfigure(4, weight=0)
self.root.grid_rowconfigure(5, weight=1)
self.root.grid_rowconfigure(5, weight=0)
self.root.grid_rowconfigure(6, weight=0)
self.root.grid_rowconfigure(7, weight=1)
self.root.grid_rowconfigure(8, weight=0)
def set_pid_parameters(self):
if self.arduino: