我正在编写一个连接到设计软件(如外部插件)的程序,然后监控鼠标移动和事件。它将根据连接的软件鼠标事件的状态采取行动。
这个想法是外部应用程序将能够连接到多个类似的程序,而不是特定于程序的插件。
原型(prototype)和可能的生产软件是使用 Tkinter GUI 库用 Python 编写的。尝试是让它变得简单和便携。
无需激活 Tkinter 窗口,我就可以轻松获取“操作系统”级别的鼠标位置(真实屏幕 X、Y)。我的问题是我没有找到一种方法来轻松地从 Tkinter 获取鼠标单击事件。我只能在事件的 Tkinter 窗口上收集事件。
Tkinter 为鼠标位置提供了这个:
coord = self.gui.winfo_pointerxy()
我找不到类似的鼠标事件。有像 selfspy 这样的库和 Pymouse (现在是 PyUserInput 的一部分)监视事件,但主要用于控制输入设备。我的备用想法是使用这些库作为编写我自己的输入监控程序的引用。
我的两个主要平台是 Mac 和 Windows。
长话短说:
- Tkinter 能否在事件超出 Tkinter 窗口。
- 如果没有,是否有其他“开箱即用”选项可以为我提供鼠标 X、Y 和鼠标事件。
- 如果没有开箱即用的解决方案,请提供有关方法和 API 的一些建议。 (看起来像 win32api for windows、Quartz 和/或 Mac 中的 Cocoa 和 Linux 中的 Xlib)
谢谢你的时间
最佳答案
这样您就可以使用 TKinter 获取鼠标位置。
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()
有一个跨平台模块pyautogui(适用于os x、windows、linux)。
pyautogui.posistion() //returns tuple with mouse x and y values
// same for python 3.x
引用这个article如何检测 windows
的鼠标点击关于python - 在 Python 中获取 Tkinter 窗口外的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773854/