仅当光标悬停在标签上时,如何将光标更改为手形?
问题描述:
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()
当我的光标悬停在它上面时,我希望我的光标变成一只手".当光标离开标签占据的区域时,我还想将光标改回箭头.但是我收到以下错误:
I want my cursor to change into a "hand" when my cursor is hovering over it. I also want to change my cursor back into an arrow when the cursor leaves the area occupied by the label. However I get the following error:
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'
如何将光标在Label占据的区域内变成手形,离开Label所在的区域时又变回箭头?
How do I change the cursor into a hand when it is in the area occupied by the Label and then change it back to an arrow when it leaves the area occupied by the Label?
答
如果您希望光标始终是手,只需将标签配置为具有该光标:
If you want the cursor to always be the hand, just configure the label to have that cursor:
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()