【问题标题】:Cross-OS Vanilla Python Mouse Get/Set跨操作系统香草 Python 鼠标获取/设置
【发布时间】:2015-10-23 10:28:24
【问题描述】:

使用 Python 2.7.10 及更高版本,有没有办法只使用预安装的库(没有 pygame、PyUserInput、Xlib、PyQt、pyautogui、PyMouse 等)来检索和设置绝对鼠标位置?

  • 这也需要适用于所有操作系统(Linux、Mac、Windows)。
  • 该解决方案必须在最新版本的 Python 以及 2.7.10 中运行
  • 我也不能让用户在弹出窗口中进行交互,因为它不是相对的,并且用户仍然需要能够与其他窗口进行交互。
  • 另外,如果可能的话,有没有办法取消鼠标事件触发的默认操作(如 JavaScript 中的 e.preventDefault())?

如果键盘事件拦截/模拟在相同的要求下也是可能的,那么额外的荣誉。

【问题讨论】:

  • 你可以写一个答案,或者至少请详细说明。为什么不直接使用与 Python 库之一相同的方法?
  • 什么方法?什么库?
  • 我在帖子中提到的任何库,例如 pygame、PyMouse 或 Xlib(也是 Unix 特定的)

标签: python cross-platform mouse


【解决方案1】:

假设您可以首先针对每个操作系统以特定于操作系统的方式进行操作

def getMouseCoords():
    if "Windows" in platform.uname():
       return get_windows_mouse()
    elif os.path.exists("/dev/input/mouse"):
       return parse_filesys_mouse()
    elif some_otheros_condition:
       return get_some_other_os_mouse()

你可能不得不找出一种特定于操作系统的方法来完成你想要交叉支持的每个操作系统的任务......

设置它们可能更复杂...

否决这些事件可能会非常非常困难

没有通用的方法来处理输入事件,因为每个操作系统的实现方式不同

粗略地说,这是一项不平凡的任务,幸运的是人们已经构建了诸如 PyMouse 之类的库来为您执行此操作....我想您可以复制并粘贴所有代码,但是这与仅按预期使用库有什么不同?

【讨论】:

  • 很好的答案,我担心单独实施特定于操作系统的解决方案是唯一的解决方案。但我仍然想看看是否有更好的解决方案。另外,我不能要求客户在运行程序时安装库。我想让 Python 脚本尽可能易于使用。这些库是用 Python 还是其他语言编写的?
  • 你不......你将它捆绑到你提供的包中......(很像 c/c++ 程序经常捆绑在其他库中......),pymouse 实际上使用其他库,具体取决于目标操作系统(即在Windows中它使用win32api,它是MS提供的win32 dll的包装器,在linux中它使用X11包装器,但是我不知道macs是如何工作的)......真正开始你应该只针对一个操作系统...
  • 我真的希望只提供一个.py 文件。这意味着客户端在开发环境中使用。保持文件尽可能小是一个明确的优势,所以如果其他人有更优雅的解决方案,我希望看到它们。对不起!
  • 那里没有问题......但我真的怀疑你会找到解决方案......你为什么不直接制作一个开发人员可以pip install的pypy包呢?大多数开发人员下载一个 zip 并运行类似 python setup.py install 的东西来安装和验证您的依赖项
  • 在我看来,您可能是本末倒置...为什么不首先针对单个操作系统并根据需要使用软件包...然后您可以将开发冻结到一个可安装的模块...我认为您在工作流程中缺少一些关键链接,并且在此时担心这一点在很大程度上是没有意义的,并且会导致您遇到很多您不需要处理的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 2021-08-03
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多