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

标签 python windows macos tkinter mouse

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

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

原型(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/

相关文章:

python - 为什么 tkinter ttk 在 python 3.5.1 中显示 "name ttk is not defined"

c++ - 如何在 native C++ 中捕获整数除以零和访问冲突异常

windows - 错误 : waitpid for fetch-pack failed: No child processes

macos - 如何为 Mac App Store 中的应用列表设置背景图片?

java - 在闪存驱动器上安装 Java

c - 错误_SDL_Main SDL Mac Xcode 6 C 语言

python - 一段时间后无法持续保存和更新 .CSV 文件

Python Xarray,按索引或维度排序?

c++ - 如何以向后方式遍历python和c++中的文件?并且还以向后(从下到上)的方式存储数据?

windows - 从 Windows 批处理文件将文件上传到 FTP 时获取 "Could not open data connection to port xxxx"