我正在python中运行一个小程序,它启动一个小窗口,需要保留在所有其他窗口之上。我相信这是特定于操作系统的,GNU-Linux在GNOME中是如何完成的?如何使python窗口作为“始终在最前面”运行?
[更新 - 解决方案适用于Windows]
可爱,我想我得到它的工作。我在Vista 64位版本的Eclipse中使用Python 2.5.4和Pygame 1.9.1。因此,这是Windows系统。 SetWindowPos功能记录在Here。我将在我的解释中提到这一点。
进口:
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设置窗口的位置以便它位于任何现有的最顶层窗口之上。当一个非最顶层的窗口成为最顶层