鼠标位置 Python Tkinter
- 2025-03-21 09:06:00
- admin 原创
- 57
问题描述:
有没有办法获取鼠标的位置并将其设置为变量?
解决方案 1:
您可以设置回调来对<Motion>
事件做出反应:
import Tkinter as tk
root = tk.Tk()
def motion(event):
x, y = event.x, event.y
print('{}, {}'.format(x, y))
root.bind('<Motion>', motion)
root.mainloop()
我不确定你想要什么类型的变量。上面,我将局部变量x
和y
设置为鼠标坐标。
如果您创建了motion
一个类方法,那么您可以设置实例属性self.x
和self.y
鼠标坐标,然后可以从其他类方法访问它们。
解决方案 2:
在任何时间点,您都可以使用方法winfo_pointerx
和winfo_pointery
获取相对于根窗口的 x,y 坐标。要将其转换为绝对屏幕坐标,您可以获取winfo_pointerx
或winfo_pointery
,然后从中减去相应的winfo_rootx
或winfo_rooty
例如:
root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_rootx()
abs_coord_y = root.winfo_pointery() - root.winfo_rooty()
解决方案 3:
我想改进 Bryan 的答案,因为这仅在您有 1 台显示器时才有效,但如果您有多个显示器,它将始终使用相对于主显示器的坐标。为了相对于两个显示器找到它并获得准确的位置,然后使用vroot
,而不是root
,就像这样
root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_vrootx()
abs_coord_y = root.winfo_pointery() - root.winfo_vrooty()
解决方案 4:
就我个人而言,我更喜欢使用pyautogui
,甚至与 Tkinter 结合使用。它不仅限于 Tkinter 应用程序,而且可以在整个屏幕上工作,即使在双屏配置下也可以工作。
import pyautogui
x, y = pyautogui.position()
如果您想保存各种位置,请添加点击事件。
我知道最初的问题是关于 Tkinter 的。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD