我在使用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/

10-12 23:38