我正在尝试让Tkinter显示一个忙碌的光标。不幸的是,我必须遗漏一些非常明显的东西。以下是一个非常简单的程序,可以重现我的问题:
from Tkinter import *
import time
def do_something():
print "starting"
window.config(cursor="wait")
time.sleep(5)
window.config(cursor="")
print "done"
return
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Do Something", command=do_something)
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
root.config(menu=menubar)
root.mainloop()
我没有看到光标发生任何变化
答案 0 :(得分:4)
像这样do_something
:
def do_something():
print "starting"
root.config(cursor="wait")
root.update()
time.sleep(5)
root.config(cursor="")
print "done"
基本上,我做了三件事:
将window
替换为root
(因为window
未定义且root
是窗口的句柄)。
在配置光标的行后面添加了root.update()
。
删除了不必要的return
(这不会导致任何错误,但为什么会这样?)。