更够实时更新弹窗的数据

This commit is contained in:
zjk
2025-01-21 20:12:38 +08:00
parent 57dd677271
commit 0d5ffb31ce
+34 -4
View File
@@ -22,6 +22,9 @@ class disSys(Frame):
self.createWidgets()
self.root = root
self.root.after(2000, self.update_disp)
# 启动数据更新定时器
self.update_data_job = None
self.start_update_data()
def createWidgets(self):
# 定义每组的颜色
self.colors = ["#FFC0CB", "#ADD8E6", "#90EE90", "#FFD700"]
@@ -94,6 +97,13 @@ class disSys(Frame):
self.buttonCurrenStateWin = tk.Button(dispFrame, text="显示电路状态", command=self.show_CurrentState)
self.buttonCurrenStateWin.grid(row=0, rowspan=3 , columnspan=2 , column=3,padx=10, pady=1, sticky="nsew")
# 添加更新按钮
# self.buttonCurrenStateWin = tk.Button(dispFrame, text="自动更新", command=self.update_currentState)
# self.buttonCurrenStateWin.grid(row=0, rowspan=3 , columnspan=2 , column=5,padx=10, pady=1, sticky="nsew")
# update_btn = tk.Button(btn_frame, text="立即更新", font=state_font,
# command=self.update_currentState)
# update_btn.pack(fill=tk.X, padx=5, pady=5)
################################################断路器操作#########################################################
# 定义四个字典来存储元素的值
self.dict1={'燃料电池断路器':'闭合',
@@ -208,8 +218,13 @@ class disSys(Frame):
def update_currentState(self):
# 更新所有数值显示
for struct, name, entry in self.state_entries:
# 获取最新值
value = str(getattr(struct, name))
# 更新entry显示
entry.config(state='normal')
entry.delete(0, tk.END)
entry.insert(0, str(getattr(struct, name)))
entry.insert(0, value)
entry.config(state='readonly')
print('电路状态已更新')
def _create_scrollable_column(self, parent_frame, title, data_struct, state_font):
@@ -233,7 +248,7 @@ class disSys(Frame):
# 配置滚动区域
def _configure_scrollregion(e):
canvas.configure(scrollregion=canvas.bbox("all"))
canvas.config(height=min(e.height, 600))
canvas.config(height=min(e.height, 800))
canvas.yview_moveto(0)
canvas.xview_moveto(0)
@@ -308,7 +323,7 @@ class disSys(Frame):
# update_btn.pack(side=tk.LEFT, padx=5)
# 启动定时更新
self.update_interval = 1000 # 5秒
self.update_interval = 1000 # 1秒
self.schedule_update()
def on_close_currentState(self):
@@ -317,6 +332,21 @@ class disSys(Frame):
self.currentStateWin.after_cancel(self.update_job)
self.currentStateWin.destroy()
def start_update_data(self):
"""启动数据更新定时器"""
self.update_data_job = self.root.after(1000, self._update_data_loop)
def stop_update_data(self):
"""停止数据更新定时器"""
if self.update_data_job:
self.root.after_cancel(self.update_data_job)
self.update_data_job = None
def _update_data_loop(self):
"""定时更新数据"""
self.updata_data()
self.update_data_job = self.root.after(1000, self._update_data_loop)
def schedule_update(self):
"""安排定时更新"""
self.update_currentState()
@@ -488,7 +518,7 @@ class disSys(Frame):
self.disLVB.emergencyLithiumBatteryGroup1CircuitBreaker = 0x55
else:
self.disLVB.emergencyLithiumBatteryGroup1CircuitBreaker = 0xAA
print("更新数据")
a = self.disHVB.pack()
b = self.disHVBA.pack()
c = self.disHVBB.pack()