你可以使用wxPython自动隐藏框架/对话框吗?

问题描述:

我想创建一个应用程序有3-4帧(或窗口),其中每个框架附加/定位到屏幕的一侧(如任务栏)。当一个框架处于非活动状态时,我希望它自动隐藏(就像Windows任务栏一样;或者OSX中的停靠栏)。当我将鼠标指针移动到隐藏框架的屏幕边缘位置时,我希望它回到焦点。你可以使用wxPython自动隐藏框架/对话框吗?

该应用程序是用Python写的(使用的wxPython为基本GUI方面的问题)。有谁知道如何在Python中做到这一点?我猜这可能是操作系统的依赖?如果是这样,我想首先关注Windows。

我不这样做GUI编程非常频繁,所以我道歉,如果这是没有意义的。

+0

我会说@FogleBird相同的东西,所以我只是建议你记住多种显示器的情况,这是很常见的日子,而且往往在您尝试的地方处理不善。我发现这个消息很有用,指向我相关的API等:http://mail.python.org/pipermail/python-list/2006-May/1068555.html – 2010-02-16 01:09:58

+0

谢谢,我一直在寻找这样的事情: ) – Jason 2010-02-16 20:14:16

据我所知,这里没有内置的东西。

当被隐藏的窗口,你希望它完全不可见或可几个像素的边框呈现出?这将是获得鼠标悬停事件的简单方法。否则,您可能不得不使用类似pyHook的东西来获取系统范围的鼠标事件,以了解何时扩展窗口。

事件EVT_ENTER_WINDOWEVT_LEAVE_WINDOW在这里也可能用于知道用户何时进入/离开窗口,以便您可以展开/折叠它。

展开/折叠可以仅通过显示/隐藏窗口或调整它们来完成。标准的窗口功能,没什么奇特的。

顺便说一句,你可能需要使用wx.ClientDisplayRect揣摩出你的窗口位置。这会给你一个桌面的矩形,不包括任务栏或用户拥有的任何其他工具栏,假设你想避免重叠这些东西。

+0

谢谢,非常有帮助:)。我最初的想法是,几个像素将是可见的,所以我可以利用这样的事件。虽然,我有一种感觉,我的客户可能更喜欢其他方式...... – Jason 2010-02-15 22:21:11

就个人而言,我将结合该FogleBird与wx.Timer提到EVT_ENTER_WINDOW和EVT_LEAVE_WINDOW。然后,只要框架或对话框在x秒内不活动,您就可以调用其Hide()方法。

我认为你可以很容易地创建一个与桌面大小相同的窗口,然后根据鼠标位置循环播放一个不活动变量,然后为4个不活动变量创建一个循环定时器。我亲自设计它,以便当它们从15变为0时,它们改变大小和位置以变成表格并在它们上创建按钮以重新激活。大量的技术工作在这一个,但很容易做到,如果你想出来