优化了disSys的代码,增加了16进制显示的功能

This commit is contained in:
zjk
2025-01-21 21:21:58 +08:00
parent 0d5ffb31ce
commit c824caa27e
+29 -6
View File
@@ -215,15 +215,25 @@ class disSys(Frame):
print(self.checkboxes[i][j].cget("text"),self.checkboxesVar[i][j].get())
# print(self.checkboxesVar[i][j].get())
def toggle_hex_mode(self):
"""切换16进制显示模式"""
self.hex_mode = not self.hex_mode
self.update_currentState()
def update_currentState(self):
# 更新所有数值显示
for struct, name, entry in self.state_entries:
# 获取最新值
value = str(getattr(struct, name))
value = getattr(struct, name)
# 根据显示模式格式化值
if self.hex_mode and isinstance(value, int):
display_value = f"0x{value:02X}"
else:
display_value = str(value)
# 更新entry显示
entry.config(state='normal')
entry.delete(0, tk.END)
entry.insert(0, value)
entry.insert(0, display_value)
entry.config(state='readonly')
print('电路状态已更新')
@@ -288,6 +298,9 @@ class disSys(Frame):
self.currentStateWin.minsize(1000, 600)
self.currentStateWin.protocol("WM_DELETE_WINDOW", self.on_close_currentState)
# 初始化16进制显示模式
self.hex_mode = False
# 创建主容器
main_frame = tk.Frame(self.currentStateWin)
main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
@@ -319,8 +332,12 @@ class disSys(Frame):
# 添加更新按钮
update_btn = tk.Button(btn_frame, text="立即更新", font=state_font,
command=self.update_currentState)
update_btn.pack(fill=tk.X, padx=5, pady=5)
# update_btn.pack(side=tk.LEFT, padx=5)
update_btn.pack(side=tk.LEFT, padx=5)
# 添加16进制显示切换按钮
hex_btn = tk.Button(btn_frame, text="16进制显示", font=state_font,
command=self.toggle_hex_mode)
hex_btn.pack(side=tk.LEFT, padx=5)
# 启动定时更新
self.update_interval = 1000 # 1秒
@@ -334,7 +351,7 @@ class disSys(Frame):
def start_update_data(self):
"""启动数据更新定时器"""
self.update_data_job = self.root.after(1000, self._update_data_loop)
self.update_data_job = self.root.after(500, self._update_data_loop)
def stop_update_data(self):
"""停止数据更新定时器"""
@@ -345,13 +362,14 @@ class disSys(Frame):
def _update_data_loop(self):
"""定时更新数据"""
self.updata_data()
self.update_data_job = self.root.after(1000, self._update_data_loop)
self.update_data_job = self.root.after(500, self._update_data_loop)
def schedule_update(self):
"""安排定时更新"""
self.update_currentState()
self.update_job = self.currentStateWin.after(self.update_interval, self.schedule_update)
def updata_data(self):
'''通过这个可以更新数据'''
if (self.dict1['燃料电池断路器']=='闭合'):
self.disHVB.DCB1 = 0x55
else:
@@ -518,7 +536,12 @@ class disSys(Frame):
self.disLVB.emergencyLithiumBatteryGroup1CircuitBreaker = 0x55
else:
self.disLVB.emergencyLithiumBatteryGroup1CircuitBreaker = 0xAA
# a = match.sin(time.time())
print("更新数据")
def get_date(self):
a = self.disHVB.pack()
b = self.disHVBA.pack()
c = self.disHVBB.pack()