优化了disSys的代码,增加了16进制显示的功能
This commit is contained in:
+29
-6
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user