我在程序中遇到了一个奇怪的问题。
from tkinter import *
import time
class Window:
def __init__(self):
self.root = Tk()
self.root.title('Test')
self.root.geometry('400x500')
self.root.resizable(FALSE, FALSE)
self.root.configure(bg ='#1A181B')
def draw_widgets(self):
Button(self.root, text='Start', font='Verdana 17',command = self.start_bot).grid(row=1, column=1)
def run(self):
self.draw_widgets()
self.root.mainloop()
def start_bot(self):
Button(self.root, text='Start', font='Verdana 17', command=self.start_bot).grid(row=2, column=1)
time.sleep(4)
print('a')
win = Window()
win.run()
win.draw_widgets()
正如您在按下按钮后所看到的,我想创建另一个按钮,然后等待4秒钟,然后打印'a',但这是另一回事:1)等待4秒钟2)打印'a'3 )正在创建按钮。
请,我该如何解决,我真的需要您的帮助。
当您使用time.sleep()
时,应用程序将暂停处理,直到该时间段结束为止。这包括更新GUI更改。为了使更改在开始睡眠之前生效,您必须使用update_idletasks()
告诉应用程序执行此操作。参见示例:
def start_bot(self):
Button(self.root, text='Start', font='Verdana 17',
command=self.start_bot).grid(row=2, column=1)
self.root.update_idletasks() # Update GUI changes
time.sleep(4)
print('a')
查看after()
函数,该函数不会暂停处理,但会在以后安排一些时间。这通常可以代替睡眠使用,是一项很好的功能。