如何使点击事件穿过 tkinter 窗口?

4

我一直在使用tkinter制作叠加层,以便某些信息显示在屏幕的顶部。

我不想让这个窗口阻止鼠标。有没有办法使单击事件穿过我的叠加层?这样,我的tkinter应用程序下面的窗口就可以接收到事件。


我认为你做不到。我尝试的方法是:1. 接收事件 2. 最小化窗口 3. 再次发送鼠标事件 4. 打开窗口。但由于最小化需要一些未知的时间,所以这并没有起作用。你可以尝试逃避鼠标,这样鼠标就永远不会进入。 - User
3个回答

2

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

Tkinter透明窗口不受鼠标点击影响


2

不,tkinter中没有内置的功能可以让你这样做。最好的情况是捕获事件,然后使用某种特定于平台的工具来创建新事件,并使用从捕获事件获取的坐标生成新的、非tkinter事件。


叹气,我就怕出现这种情况。谢谢!是的,我可以做一个hack来移动窗口,模拟鼠标点击,然后再移回鼠标。但这需要pymouse,而pymouse需要pyobjc,安装起来也有一些麻烦。 - Bachmann

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接