diff --git a/test/scripts/disSys.py b/test/scripts/disSys.py index f0ce0f6..cb3a18d 100644 --- a/test/scripts/disSys.py +++ b/test/scripts/disSys.py @@ -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()