我在使用after
中的Tkinter
方法时遇到问题。
计划以1秒为间隔打印i
。我检查了after
方法是否合适,但我不太清楚。
这是密码。
# -*- coding: utf-8 -*-
from Tkinter import *
import time
root = Tk()
root.title("Program")
root['background'] ='gray'
def command_Print():
for i in range(0, 10, 1):
time.sleep(1)
Label0.after(1)
Labelvar.set(i)
Labelvar = StringVar()
Labelvar.set(u'original value')
Frame0 = Frame(root)
Frame0.place(x=0, y=0, width=100, height=50)
Label0 = Label(Frame0, textvariable=Labelvar, anchor='w')
Label0.pack(side=LEFT)
Frame_I = Frame(root)
Frame_I.place(x = 100, y = 0, width=100, height=70)
Button_I = Button(Frame_I, text = "Button" , width = 100, height=70, command = command_Print)
Button_I.place(x=0, y=0)
Button_I.grid(row=0, column=0, sticky=W, pady=4)
Button_I.pack()
root.mainloop()
最佳答案
不要在Tkinter应用程序中使用time.sleep()
。让回调计划用after()
调用自己。
def command_Print(counter=0):
Labelvar.set(counter)
if counter < 10:
root.after(1000, lambda: command_Print(counter+1))
而且,
range(0, 10, 1)
就是range(10)
。没有必要重复默认值。关于python - 如何使用Tkinter after()方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37748729/