import tkinter as tk from tkinter import messagebox from udpmsg import msg_CcuStateFbMsg class msg_CcuStateFbMsg: def __init__(self): self.start1 = 0x40 self.start2 = 0x40 self.id = 0x0001 self.length = 0x0000 self.flag = 0x00 self.failvreCode = 0x00 def pack(self): # 初始化数据 pass # function body is omitted class InputGUI: def __init__(self, master): self.master = master self.printing = False self.msg_instance = msg_CcuStateFbMsg() # 创建一个Frame来包含所有的输入框和标签 row = 0 column = 0 self.input_frame = tk.Frame(master, bg='lightgray') self.input_frame.grid(row=1, column=0, sticky='nsew') self.title_label = tk.Label(self.input_frame, text="复合管控消息交互", font=("Arial", 16, "bold")) self.title_label.grid(row=0, column=0, columnspan=2, pady=(10, 20), sticky="nsew") # 调整标题的上下边距并居中显示 # 创建输入框和标签 self.start1_label = tk.Label(self.input_frame, text="Start1:") self.start1_label.grid(row=1, column=0) self.start1_entry = tk.Entry(self.input_frame) self.start1_entry.grid(row=1, column=1) self.start2_label = tk.Label(self.input_frame, text="Start2:") self.start2_label.grid(row=2, column=0) self.start2_entry = tk.Entry(self.input_frame) self.start2_entry.grid(row=2, column=1) self.id_label = tk.Label(self.input_frame, text="ID:") self.id_label.grid(row=3, column=0) self.id_entry = tk.Entry(self.input_frame) self.id_entry.grid(row=3, column=1) self.length_label = tk.Label(self.input_frame, text="Length:") self.length_label.grid(row=4, column=0) self.length_entry = tk.Entry(self.input_frame) self.length_entry.grid(row=4, column=1) self.flag_label = tk.Label(self.input_frame, text="Flag:") self.flag_label.grid(row=5, column=0) self.flag_entry = tk.Entry(self.input_frame) self.flag_entry.grid(row=5, column=1) self.failvreCode_label = tk.Label(self.input_frame, text="Failvre Code:") self.failvreCode_label.grid(row=6, column=0) self.failvreCode_entry = tk.Entry(self.input_frame) self.failvreCode_entry.grid(row=6, column=1) # 创建更新按钮 self.update_button = tk.Button(self.input_frame, text="Update", command=self.update_msg) self.update_button.grid(row=7, column=0, columnspan=2) # 创建打印按钮 self.print_button = tk.Button(self.input_frame, text="Print", command=self.start_printing) self.print_button.grid(row=8, column=0) # 创建停止打印按钮 self.stop_button = tk.Button(self.input_frame, text="Stop", command=self.stop_printing, state=tk.DISABLED) self.stop_button.grid(row=8, column=1) # 创建显示打印消息数量的标签 self.print_count_label = tk.Label(self.input_frame, text="Print Count: 0", font=("Arial", 12)) self.print_count_label.grid(row=9, column=0, columnspan=2) # 创建更新按钮 self.update_button = tk.Button(self.input_frame, text="Update", command=self.update_msg) self.update_button.grid(row=7, column=0, columnspan=2) def update_msg(self): try: self.msg_instance.start1 = int(self.start1_entry.get(), 16) self.msg_instance.start2 = int(self.start2_entry.get(), 16) self.msg_instance.id = int(self.id_entry.get(), 16) self.msg_instance.length = int(self.length_entry.get(), 16) self.msg_instance.flag = int(self.flag_entry.get(), 16) self.msg_instance.failvreCode = int(self.failvreCode_entry.get(), 16) messagebox.showinfo("Success", "msg_CcuStateFbMsg updated successfully!") except ValueError: messagebox.showerror("Error", "Invalid input. Please enter valid hexadecimal values.") def start_printing(self): self.printing = True self.print_count = 0 self.print_count_label.config(text="Print Count: 0") self.print_button.config(state=tk.DISABLED) self.stop_button.config(state=tk.NORMAL) self.print_message() def stop_printing(self): self.printing = False self.print_button.config(state=tk.NORMAL) self.stop_button.config(state=tk.DISABLED) def print_message(self, callback=None): if self.printing: print("Printing message...") self.print_count += 1 self.print_count_label.config(text=f"Print Count: {self.print_count}") if callback: callback() self.master.after(1000, self.print_message, callback) # 每秒打印一次 if __name__ == "__main__": root = tk.Tk() gui = InputGUI(root) root.mainloop()