在Python中获取Tkinter窗口之外的鼠标事件

Tra*_*isT 8 python windows macos mouse tkinter

我正在编写一个程序,连接到设计软件,如外部插件,然后监视鼠标移动和事件.它将根据连接的软件鼠标事件的状态采取行动.

这个想法是外部应用程序将能够连接到多个类似的程序而不是程序特定的插件.

原型,可能是生产软件,是使用Tkinter GUI库在python中编写的.尝试是使其简单和便携.

我很容易抓住"OS"级鼠标位置(真正的屏幕X,Y)而不需要Tkinter窗口处于活动状态.我的问题是我找不到从Tkinter轻松获取鼠标点击事件的方法.我只能在活动的Tkinter窗口上收集事件.

Tkinter为鼠标位置提供此功能:

coord = self.gui.winfo_pointerxy()
Run Code Online (Sandbox Code Playgroud)

我找不到类似的鼠标事件.像selfspyPymouse(现在是PyUserInput的一部分)这样的库可以监视事件,但主要用于控制输入设备.我的备份想法是在编写我自己的输入监控程序时使用这些库作为参考.

我的两个主要平台是Mac和Windows.

长话短说:

  • 当事件在Tkinter窗口之外时,Tkinter可以给我鼠标事件.
  • 如果没有,是否有"开箱即用"的其他选项可以给我鼠标X,Y和鼠标事件.
  • 如果没有开箱即用的解决方案,一些关于方法和API的建议.(看起来像win32api for windows,Quartz和/或Cocoa在Mac和Xlib在Linux中)

谢谢你的时间

Tri*_*tan 1

这样您就可以使用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()
Run Code Online (Sandbox Code Playgroud)

有一个跨平台模块 pyautogui (适用于 os x、windows、linux)。

pyautogui.posistion() //returns tuple with mouse x and y values
                      // same for python 3.x
Run Code Online (Sandbox Code Playgroud)

参考这篇文章如何检测Windows的鼠标点击