values = ["D", "N"] self.label5 = tk.Label(input_frame, text="班別") self.label5.pack(side=tk.LEFT, padx=0.02, pady=0.02) self.combobox5 = tk.ttk.Combobox(input_frame, width=10, values=values, state="readonly") self.combobox5.pack(side=tk.LEFT, padx=0.05, pady=0.05) current_time = datetime.datetime.now().time() start_time = datetime.time(8, 0) # 開始時間:08:00 end_time = datetime.time(19, 0) # 結束時間:19:00 if start_time <= current_time <= end_time: self.combobox5.current(0) else: self.combobox5.current(1)修改這段代碼,每30秒獲取當前時間更新判斷
时间: 2024-04-11 13:28:00 浏览: 141
你可以使用`after()`方法来定时更新当前时间并进行判断。这个方法可以在指定的毫秒数后调用一个函数。在这个函数中,你可以更新当前时间并进行判断。
以下是修改后的代码示例:
```python
import tkinter as tk
from tkinter import ttk
import datetime
class YourClass:
def __init__(self):
values = ["D", "N"]
self.label5 = tk.Label(input_frame, text="班別")
self.label5.pack(side=tk.LEFT, padx=0.02, pady=0.02)
self.combobox5 = tk.ttk.Combobox(input_frame, width=10, values=values, state="readonly")
self.combobox5.pack(side=tk.LEFT, padx=0.05, pady=0.05)
self.update_current_time() # 初始更新当前时间
self.root.after(30000, self.update_current_time) # 每30秒更新一次当前时间
def update_current_time(self):
current_time = datetime.datetime.now().time()
start_time = datetime.time(8, 0) # 开始时间:08:00
end_time = datetime.time(19, 0) # 结束时间:19:00
if start_time <= current_time <= end_time:
self.combobox5.current(0)
else:
self.combobox5.current(1)
self.root.after(30000, self.update_current_time) # 再次调用更新当前时间函数,以实现循环更新
# 创建你的对象并启动主循环
your_object = YourClass()
your_object.root.mainloop()
```
在这个示例中,我们将更新当前时间的逻辑抽取到了`update_current_time()`方法中,并在初始化方法中调用了这个方法。然后,我们使用`root.after()`方法在每30秒后再次调用`update_current_time()`方法,以实现循环更新。
请注意,这个示例是基于你之前提供的代码进行的修改,假设你已经有一个名为`root`的`tkinter`窗口实例。如果你的代码中没有这个部分,请根据你的具体情况进行相应调整。
阅读全文