仅当光标悬停在标签上时,如何将光标更改为手形?

S.A*_*med 0 python tkinter

from tkinter import *
root = Tk()
def changeCursor(event, pointerName):
    root.cursor(pointerName)
link = Label(root, text="Link")
link.bind("<Motion>", lambda event : changeCursor(event, "hand"))
link.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

当我的光标悬停在它上面时,我希望我的光标变成一只“手”。当光标离开标签占据的区域时,我还想将光标改回箭头。但是我收到以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Arnob\AppData\Local\Programs\Python\Python36-
32\lib\idlelib\run.py", line 137, in main
    seq, request = rpc.request_queue.get(block=True, timeout=0.05)
  File "C:\Users\Arnob\AppData\Local\Programs\Python\Python36-
32\lib\queue.py", line 172, in get
   raise Empty
queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Arnob\AppData\Local\Programs\Python\Python36-
32\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
  File "<pyshell#7>", line 1, in <lambda>
  File "<pyshell#4>", line 2, in changePointer
  File "C:\Users\Arnob\AppData\Local\Programs\Python\Python36-
32\lib\tkinter\__init__.py", line 2095, in __getattr__
    return getattr(self.tk, attr)
AttributeError: '_tkinter.tkapp' object has no attribute 'cursor'
Run Code Online (Sandbox Code Playgroud)

如何在光标位于标签占据的区域时将光标变为手形,然后在离开标签占据的区域时将其变回箭头?

Bry*_*ley 10

如果您希望光标始终是手,只需将标签配置为具有该光标:

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Hello, world", background="bisque", cursor="hand1")
label.pack(side="top", fill="x", padx=10, pady=10)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

  • @ABHIJIT https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/cursors.html (2认同)

Was*_*Ali 5

import tkinter as tk    
root = tk.Tk()    
myLabel= tk.Label(root, text="Click Me", cursor="hand2")
myLabel.pack()    
root.mainloop()
Run Code Online (Sandbox Code Playgroud)