如何让 Python 窗口以“始终在最前面”的方式运行?
- 2024-11-11 08:26:00
- admin 原创
- 27
问题描述:
我正在用 Python 运行一个小程序,它会启动一个小窗口,该窗口需要保持在所有其他窗口的顶部。我相信这是操作系统特有的,在 GNU-Linux 和 GNOME 中如何实现?
[更新 - Windows 解决方案]
太棒了,我想我让它工作了。我在 Vista 64 位 Eclipse 中使用 Python 2.5.4 和 Pygame 1.9.1。因此,这是针对 Windows 系统的。该SetWindowPos
函数记录在这里。我将在我的解释中引用它。
进口:
from ctypes import windll
然后我设置了一个调用user32中的“SetWindowPos”的变量:
SetWindowPos = windll.user32.SetWindowPos
现在,假设我刚刚创建了一个窗口:
screen = pygame.display.set_mode((100,100), pygame.NOFRAME)
下一行是关键。这将窗口设置为位于其他窗口之上。
SetWindowPos(pygame.display.get_wm_info()['window'], -1, x, y, 0, 0, 0x0001)
基本上,您向hWnd
(窗口句柄) 提供调用 返回的窗口 ID display.get_wm_info()
。现在该函数可以编辑您刚刚初始化的窗口。
这-1
是我们的hWndInsertAfter
。
MSDN 网站表示:
可以通过将 hWndInsertAfter 参数设置为 HWND_TOPMOST 并确保未设置 SWP_NOZORDER 标志,或通过设置窗口在 Z 顺序中的位置,使其位于任何现有最顶层窗口之上,将窗口设为最顶层窗口。当非最顶层窗口设为最顶层时,其所属窗口也会设为最顶层。但是,其所有者不会改变。
因此,-1
确保窗口位于任何其他现有最顶层窗口之上,但这可能并非在所有情况下都有效。也许 -2 胜过 -1?它目前对我来说有效。:)
x
和指定y
要设置的窗口的新坐标。我希望在调用该函数时窗口保持在当前位置SetWindowPos
。唉,我找不到一种方法轻松地将当前窗口 (x,y) 位置传递给函数。我找到了解决方法,但我认为我不应该在这个问题中引入新主题。
应该0, 0,
指定窗口的新宽度和高度(以像素为单位)。好吧,该功能已经包含在您的pygame.display.set_mode()
函数中,因此我将它们保留为 0。0x0001
忽略这些参数。
0x0001
对应于 SWP_NOSIZE 并且是我唯一的 uFlag。所有可用 uFlag 的列表位于提供的文档页面上。它们的一些十六进制表示如下:
SWP_NOSIZE = 0x0001
SWP_NOMOVE = 0x0002
SWP_NOZORDER = 0x0004
SWP_NOREDRAW = 0x0008
SWP_NOACTIVATE = 0x0010
SWP_FRAMECHANGED = 0x0020
SWP_SHOWWINDOW = 0x0040
SWP_HIDEWINDOW = 0x0080
SWP_NOCOPYBITS = 0x0100
SWP_NOOWNERZORDER = 0x0200
SWP_NOSENDCHANGING = 0x0400
就这些了!希望对你有用!
感谢 John Popplewell (john@johnnypops.demon.co.uk)的帮助。
解决方案 1:
问题更像是您使用哪种窗口工具包? PyGTK 和类似的受过教育的谷歌搜索给了我这个:
gtk.Window.set_keep_above
正如前面提到的,是否尊重此设置取决于窗口管理器。
编辑以包含 SDL 特定内容Pygame 使用 SDL 进行显示工作,但显然与窗口工具包
配合不佳。此处讨论了可以放在顶部的 SDL 窗口。
解决方案 2:
我确实不太了解 Python,但谷歌搜索“pygtk always on top”给了我这个:
http://www.mail-archive.com/pygtk@daa.com.au/msg01370.html
那里发布的解决方案是:
transient.set_transient_for(main_window)
您可能还想搜索“x11 始终在最上面”之类的内容。其基本概念似乎是您向窗口管理器发出“提示”,让其将该窗口保持在其他窗口之上。但是,窗口管理器可以自由地做任何它想做的事情。
在使用 Fluxbox 之类的窗口管理器时,我也看到了层的概念,因此也许有办法改变窗口出现的层。
解决方案 3:
我试图找出类似的问题,并使用 Pmw 模块找到了此解决方案
http://www.java2s.com/Code/Python/GUI-Pmw/Showglobalmodaldialog.htm
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件