【发布时间】:2015-03-25 18:20:52
【问题描述】:
当试图中断一个 tkinter 应用程序时,似乎 time.sleep() 会暂停一些先前的命令。根据我的理解和以往的经验,label1的文字应该设置为“之前”一秒钟,然后改为“之后”。但是,“before”值永远不会出现,“after”会在执行一秒后正常打印。
from tkinter import *
import time
class Display(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
label1 = Label(text = "before")
label1.grid()
self.after(1000, label1.config(text = "after"))
def main():
root = Tk()
Display(root)
root.mainloop()
if __name__ == '__main__':
main()
请注意,使用 time.sleep(...) 产生与 tkinter after(...) 相同的结果
from tkinter import *
import time
class Display(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
label1 = Label(text = "before")
label1.grid()
time.sleep(1)
label1.config(text = "after")
def main():
root = Tk()
Display(root)
root.mainloop()
if __name__ == '__main__':
main()
我想 tkinter 正在等待执行图形工作的东西(控制台没有问题),但我看不到什么,并且 tkinter 文档没有解决这个问题。
有没有一种简单的方法可以获得明显的预期结果?
【问题讨论】:
-
您的代码中没有任何地方调用 Thread.sleep 或任何其他线程代码。
-
Oups.. 我修复了词汇表。我的印象是这两个概念是一回事。