122 lines
4.8 KiB
Python
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()
|