如何使用 Tkinter after() 方法?

2024-01-02

我在使用时遇到问题after中的方法Tkinter.

计划是打印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()

after有一个参数(例如:after(10)) 与调用相同time.sleep,一般应避免。由于它使您的 GUI 进入睡眠状态,因此您的 GUI 将无法响应any事件(包括用户或操作系统刷新或调整窗口大小的请求)

你打电话时after如果有两个或多个参数,第二个参数是对您将来要调用的函数的引用。所有剩余的参数将传递给该函数。

Tkinter 维护一个事件队列。mainloop是监视队列并在事件进入时运行事件的函数。当您调用after,您请求的函数只是简单地添加到带有时间戳的队列中。当准备好处理时,tkinter 将调用该函数并传入参数。就这么简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Tkinter after() 方法? 的相关文章

随机推荐