我正在尝试用python制作数字时钟,我想我做对了所有事情,但是Canvas并没有刷新,因此它只停留在1个位置。
import tkinter
import datetime
canvas = tkinter.Canvas(width=640, height=480)
canvas.pack()
t = datetime.datetime.now()
current_time = t.strftime("%H:%M:%S.%f")[:-5]
hour = t.hour
minute = t.minute
second = t.second
mc = t.microsecond
micro = mc/100000
print(current_time)
def tick():
global current_time, micro, second, minute, hour
micro += 1
canvas.after(100, tick)
if micro > 9:
second += 1
tick
if second > 59:
minute += 1
tick
if minute > 59:
hour += 1
tick
if hour > 23:
hour = 0
tick
clock = canvas.create_text(320, 240, font="arial 72", text=current_time)
canvas.itemconfig(clock, text=current_time)
canvas.mainloop()
我可以这样做吗,还是需要给画布加上标签?
答案 0 :(得分:1)
无论何时要更改画布项目,都必须重新配置它(例如:canvas.itemconfigure(clock, text=...)
)。另外,您必须调用一次tick
才能开始循环。
对于简单的时钟,无需计算小时,分钟和秒。每次调用函数时,只需询问python当前时间就更简单了。
示例:
import tkinter
import datetime
canvas = tkinter.Canvas(width=640, height=480)
canvas.pack()
def tick():
t = datetime.datetime.now()
current_time = t.strftime("%H:%M:%S.%f")[:-5]
canvas.itemconfigure(clock, text=current_time)
canvas.after(100, tick)
clock = canvas.create_text(320, 240, font="arial 72")
tick()
canvas.mainloop()