运行久了会卡死
import tkinter as tk
import tkinter.ttk as ttk
from time import strftime
import time
import winsound
root = tk.Tk()
root.title('电子时钟')
root.resizable(True, True)
def get_time():
local_time = strftime('%H:%M %p')
LB_1.config(text=local_time)
root.after(1000, get_time)
LB_1 = ttk.Label(root, font=('微软雅黑', 20, 'bold'), anchor=tk.CENTER, background='#008CBA', foreground='white')
LB_1.pack(fill=tk.BOTH, expand=True)
get_time()
ass=LB_1.cget("text")
def sound():
aa=LB_1.cget("text")
#print(ass)
time.sleep(1)
get_time()
bb=LB_1.cget("text")
#print(as2)
if aa != bb:
print("LB_1内容更新!!!")
winsound.Beep(3000, 3000)
root.after(1000, sound)
sound()
root.mainloop()
after又调用after 导致栈一直在堆叠
LB_1(Label)里面的内容每发生变化 系统会发出声音
下有代码,可直接复制使用。如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!
import tkinter as tk
import time
import winsound
class Clock():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="", font=('Helvetica', 48), fg='red')
self.label.pack()
self.old_time = '' # 记录旧的时间
self.update_clock_and_sound_beep()
self.root.mainloop()
def update_clock_and_sound_beep(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
if self.old_time != now:
print("内容更新!!!", now)
winsound.Beep(3000, 3000)
self.old_time = now
self.root.after(1000, self.update_clock_and_sound_beep)
Clock()
为什么要嵌套after呢,导致定时器越来越多。在一个定时器里不是可以完成吗?
def get_time():
aa = LB_1.cget("text")
local_time = strftime('%H:%M %p')
LB_1.config(text=local_time)
if aa!=local_time:
print("LB_1内容更新!!!")
winsound.Beep(3000, 3000)
root.after(1000, get_time)
LB_1 = ttk.Label(root, font=('微软雅黑', 20, 'bold'), anchor=tk.CENTER, background='#008CBA', foreground='white')
LB_1.pack(fill=tk.BOTH, expand=True)
local_time = strftime('%H:%M %p')
LB_1.config(text=local_time)
get_time()
Tkinter
本来就很缓慢,很难用,Python
开发图形用户界面建议选择 PyQt
或者 WxPython
。
望采纳。
检查漏动。设置定时不需要太多。Python 开发图形用户界面建议选择 PyQt 。
python,TK实时更新并发出提示声音
import winsound
duration = 1500 # millisecond
freq = 440 # Hz
winsound.Beep(freq, duration)
winsound.Beep(500, 5000)