要实现一个 UI 页面显示实时时间,并且每小时的 25 分和 55 分改变窗口颜色,我们可以创建一个简单的 tkinter
应用程序。以下是一个更新后的示例代码,它将显示一个实时更新的时间,并在指定时间改变背景颜色:
import tkinter as tk
from time import strftime
class TimeApp:
def __init__(self, root):
self.root = root
self.root.attributes('-topmost', 1) # 窗口置顶
self.root.geometry('200x100+10+10') # 窗口大小及位置
self.root.title("时间提醒")
# 创建标签显示时间
self.time_label = tk.Label(self.root, text="", font=("Helvetica", 16), bg="white", fg="black")
self.time_label.pack()
# 设置定时任务更新时间
self.update_time()
# 设置窗口背景颜色变化
self.original_color = self.root['bg'] # 保存原始颜色
self.root.bind('<Button-1>', self.reset_color)
# 定时检查是否需要改变颜色
self.root.after(1000, self.check_time)
def update_time(self):
current_time = strftime('%H:%M:%S')
self.time_label.config(text=current_time)
self.root.after(1000, self.update_time) # 每秒更新时间
def check_time(self):
current_time = strftime('%H:%M:%S')
minute = int(current_time.split(':')[1])
if minute == 25 or minute == 55:
if self.root['bg'] != 'red':
self.root.configure(bg = 'red')
else:
if self.root['bg'] != self.original_color:
self.root.configure(bg = self.original_color)
self.root.after(60000, self.check_time) # 每分钟检查一次
def reset_color(self, event):
self.root.configure(bg=self.original_color)
def main():
root = tk.Tk()
app = TimeApp(root)
root.mainloop()
if __name__ == '__main__':
main()
代码解释:
初始化窗口:
- 创建一个窗口,并设置其大小和标题。
创建时间标签:
- 使用
tk.Label
创建一个标签来显示时间,设置字体和颜色。
- 使用
更新时间:
update_time
方法每秒更新一次标签上的时间显示。
定时任务:
check_time
方法每分钟检查当前时间的分钟数,如果是 25 或 55 分,就将窗口背景颜色改为红色,否则恢复原始颜色。
重置颜色:
- 通过绑定鼠标点击事件
<Button-1>
,实现点击窗口后颜色恢复正常。
- 通过绑定鼠标点击事件
主函数:
- 创建主窗口并启动应用程序。
在 Tkinter 中,self.root.bind('<Button-1>', self.reset_color)
这行代码是用来为窗口绑定一个事件处理函数的。
self.root
: 指的是 Tkinter 窗口(或称为根窗口)的对象。bind
: 是该窗口对象的一个方法,用于将特定的事件与一个处理函数(也称为回调函数)关联起来。'<Button-1>'
: 这是一个事件字符串,指定了要绑定的鼠标事件类型。在这里,<Button-1>
表示鼠标左键点击事件。数字1
代表鼠标左键,而其他数字可能代表不同的按钮(例如,<Button-2>
通常代表鼠标中键,<Button-3>
代表鼠标右键)。self.reset_color
: 是一个方法(或函数)的引用,当触发了上述定义的事件(即鼠标左键点击)时,这个方法将被调用。
所以,这行代码的意思是:“当用户在窗口上点击鼠标左键时,调用 self.reset_color
方法。”
在你的程序中,self.reset_color
方法的作用是重置窗口的背景颜色,如下所示:
def reset_color(self, event):
self.root.configure(bg=self.original_color)