Python Tkinter中的after方法
Tkinter是一个制作GUI的python库。它有很多内置方法来创建和操作GUI窗口和其他小部件来显示数据和GUI事件。在本文中,我们将看到如何在Tkinter GUI中使用after方法。
语法
.after(delay, FuncName=FuncName)
此方法在给定的延迟时间后调用函数FuncName,单位为毫秒
显示小部件
这里我们制作一个框架以随机显示一个单词列表。我们使用random库以及after方法调用一个函数,以随机方式显示给定列表中的文本。
示例
import random
from tkinter import *
base = Tk()
a = Label(base, text="After() Demo")
a.pack()
contrive = Frame(base, width=450, height=500)
contrive.pack()
words = ['周一', '周二', '周三', '周四', '周五','周六','周日']
#以随机顺序一个接一个地显示单词。
def display_weekday():
if not words:
return
rand = random.choice(words)
character_frame = Label(contrive, text=rand)
character_frame.pack()
contrive.after(500,display_weekday)
words.remove(rand)
base.after(0, display_weekday)
base.mainloop()
运行上述代码会给我们带来以下结果:
再次运行相同的程序,我们将看到显示不同顺序的单词的结果。
停止处理
在下一个示例中,我们将看到如何将after方法用作延迟机制,等待进程运行一定的时间,然后停止该进程。我们还使用destroy方法停止处理。
示例
from tkinter import Tk, mainloop, TOP
from tkinter.ttk import Button
from time import time
base = Tk()
stud = Button(base, text = 'After Demo()')
stud.pack(side = TOP, pady = 8)
print('处理开始……')
begin = time()
base.after(3000, base.destroy)
mainloop()
conclusion = time()
print('处理在 % d 秒内被破坏' % ( conclusion-begin))
运行上述代码会给我们带来以下结果:
处理开始…
处理在 3 秒内被破坏