如何在Tkinter中隐藏或禁用鼠标指针?

WoJ*_*WoJ 9 python mouse tkinter

我有一个不需要鼠标的全屏Tkinter Python应用程序 - 简化版本如下.它会打开全屏并在按下时激活文本小部件F1.

import Tkinter as tk

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.root.attributes('-fullscreen', True)
        self.root.configure(background='red')
        self.root.bind('<F1>', self.opennote)
        self.root.bind('<F2>', self.closenote)
        self.root.bind('<F3>', self.quit)
        l = tk.Label(text="some text here")
        l.pack()
        self.root.mainloop()

    def opennote(self, event):
        self.n = tk.Text(self.root, background='blue')
        self.n.pack()

    def closenote(self, event):
        self.n.destroy()

    def quit(self, event):
        self.root.destroy()

App()
Run Code Online (Sandbox Code Playgroud)

启动时,鼠标指针不可见.但是,在启动Text小部件后,它会变得可见,然后停留(在文本框架和屏幕的其余部分之间改变形状).

我发现了一些关于如何隐藏鼠标光标的文章(通过使用cursor=''in参数),但是我找不到任何可以用于鼠标指针的小部件.

是否可以在Tkinter中完全隐藏(或禁用)鼠标指针?

(关于如何设置鼠标位置的问题帮助我通过发出一个来移动这个光标self.root.event_generate('<Motion>', warp=True, x=self.root.winfo_screenwidth(), y=self.root.winfo_screenheight()).这不是解决方案,但至少指针不会从屏幕中间跳到一个人的脸上)

dhr*_*s90 22

我猜,

root.config(cursor="none") 应该管用.


Fiv*_*ver 5

我最接近的是创建一个Frame并将光标设置为'none',但它仍然存在一个问题,即要求光标离开并重新进入应用程序窗口,至少在我的机器上是什么(Mac OS X Mavericks).也许其他人可以弄清楚如何在应用程序加载时触发光标消失,但这是我到目前为止的代码:

import Tkinter as tk


class App():
    def __init__(self):
        self.root = tk.Tk()
        self.root.attributes('-fullscreen', True)
        self.main_frame = tk.Frame(self.root)
        self.main_frame.config(background='red', cursor='none')
        self.main_frame.pack(fill=tk.BOTH, expand=tk.TRUE)
        self.root.bind('<F1>', self.opennote)
        self.root.bind('<F2>', self.closenote)
        self.root.bind('<F3>', self.quit)
        l = tk.Label(self.main_frame, text="some text here")
        l.pack()
        self.root.mainloop()

    def opennote(self, event):
        self.n = tk.Text(self.main_frame, background='blue')
        self.n.pack()

    def closenote(self, event):
        self.n.destroy()

    def quit(self, event):
        self.root.destroy()

App()
Run Code Online (Sandbox Code Playgroud)