如何使python窗口作为“始终在顶部”运行?
我正在python中运行一个小程序,该程序会启动一个小窗口,该窗口需要保持在所有其他窗口的顶部。我相信这是特定于OS的,如何在带有GNOME的GNU-
Linux中完成?
[ ]
可爱,我想我可以使用。我在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。提供的文档页面上列出了所有可用的uFlags。其十六进制表示形式如下:
- 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@johnnypops.demon.co.uk感谢John Popplewell的帮助。
回答:
问题更像是您在使用哪个窗口工具包?PyGTK和受过类似教育的谷歌搜索给了我这个:
gtk.Window.set_keep_above
如前所述,由窗口管理器决定是否遵守此设置。
Pygame使用SDL进行显示工作,并且显然不能与Windowing工具箱配合使用。SDL
Window可以放在顶部讨论在这里。
以上是 如何使python窗口作为“始终在顶部”运行? 的全部内容, 来源链接: utcz.com/qa/432868.html