Python:Tkinter -- 如何让光标显示忙碌状态

use*_*257 5 python tkinter

我正在尝试让 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()
Run Code Online (Sandbox Code Playgroud)

我没有看到光标有任何变化

小智 7

do_something像这样制作:

def do_something():
    print "starting"
    root.config(cursor="watch")
    root.update()
    time.sleep(5)
    root.config(cursor="")
    print "done"
Run Code Online (Sandbox Code Playgroud)

基本上,我做了三件事:

  1. 替换windowroot(因为window未定义并且root是窗口的句柄)。

  2. 添加root.update()到配置光标的行之后。

  3. 删除了不必要的return(这不会导致任何错误,但为什么要有它呢?)。

  • 得到 TclError ' 错误的游标规范“等待”'。对我来说,它使用'cursor =“clock”'(Ubuntu 18.04) (4认同)