【问题标题】:How to make click events pass though a tkinter window?如何使点击事件通过 tkinter 窗口?
【发布时间】:2013-10-23 15:34:49
【问题描述】:

我一直在尝试使用 tkinter 制作叠加层,因此一些信息会出现在屏幕其余部分的顶部。

我不希望这个窗口挡住鼠标。有什么办法可以让点击事件通过我的叠加层?所以我的 tkinter 应用程序下方的窗口接收到事件。

【问题讨论】:

  • 我认为你做不到。我尝试的是 1. 接收事件 2. 最小化窗口 3. 再次发送鼠标事件 4. 打开窗口。但这不起作用,因为最小化需要一些未知的时间。您可以尝试逃离鼠标,以免鼠标进入。

标签: python tkinter


【解决方案1】:

正如其他答案所述,我认为通过 Tkinter 是不可能的,但是,您可以使用 win32 使窗口能够被点击。 VRage 在他对这篇文章的评论中回答得很好:

Tkinter see through window not affected by mouse clicks

【讨论】:

    【解决方案2】:

    不,tkinter 没有内置任何东西可以让你这样做。您可能希望的最好结果是捕获一个事件,然后使用某种特定于平台的工具来创建新事件,并使用捕获的事件的坐标来生成一个新的非 tkinter 事件。

    【讨论】:

    • 叹息,我害怕这个。谢谢!是的,我可以做的一个技巧是移动窗口,模拟鼠标点击,将鼠标移回。但这需要 pymouse ,它需要 pyobjc ,而 pyobjc 有自己的麻烦来安装。
    【解决方案3】:

    一种方法是使用轻量级调用程序和调度程序构建您自己的消息队列,以处理消息和小部件的状态。此类或函数通常没有队列管理器之类的名称,因为具有后端类是应用程序的通用项目。添加到简单的事件传输队列可以完成这就是我现在正在做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2016-09-07
      相关资源
      最近更新 更多