Files
2025-01-21 19:34:23 +08:00

122 lines
4.8 KiB
Python

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()