- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在 python 中运行一个小程序,它会启动一个小窗口,该窗口需要位于所有其他窗口之上。我相信这是特定于操作系统的,它是如何在 GNU-Linux 和 GNOME 中完成的?
[更新 - Windows 解决方案]
太棒了,我想我成功了。我在 64 位 Vista 上的 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
(窗口句柄)提供调用 display.get_wm_info()
返回的窗口 ID。现在该函数可以编辑您刚刚初始化的窗口。
-1
是我们的hWndInsertAfter
。
MSDN 网站说:
A window can be made a topmost window either by setting the hWndInsertAfter parameter to HWND_TOPMOST and ensuring that the SWP_NOZORDER flag is not set, or by setting a window's position in the Z order so that it is above any existing topmost windows. When a non-topmost window is made topmost, its owned windows are also made topmost. Its owners, however, are not changed.
因此,-1
确保该窗口位于任何其他现有最顶层窗口之上,但这可能并非在所有情况下都有效。也许 -2 胜过 -1?它目前对我有用。 :)
x
和y
指定正在设置的窗口的新坐标。当 SetWindowPos
函数被调用时,我希望窗口保持在当前位置。 las,我找不到一种方法可以轻松地将当前窗口 (x,y) 位置传递给函数。我能够找到解决方法,但假设我不应该在这个问题中引入新主题。
0, 0,
应该以像素为单位指定窗口的新宽度和高度。嗯,该功能已经在您的 pygame.display.set_mode()
函数中,所以我将它们保留为 0。0x0001
忽略这些参数。
0x0001
对应于 SWP_NOSIZE 并且是我唯一的 uFlag。所有可用 uFlag 的列表在提供的文档页面上。它们的一些十六进制表示如下:
应该是吧!希望它对你有用!
感谢 John Popplewell 在 john@johnnypops.demon.co.uk 的帮助。
最佳答案
问题更像是您使用的是哪个窗口工具包? PyGTK 和类似的受过教育的谷歌搜索给了我 this :
gtk.Window.set_keep_above
如前所述,是否遵守此设置取决于窗口管理器。
经过编辑以包含 SDL 特定内容Pygame 使用 SDL 来做显示工作,显然不能很好地与 Windowing toolkits 一起玩. SDL Window 可以置顶讨论here .
关于python - 如何让 python 窗口以 "Always On Top"运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482565/
always block 和 always @* block 之间有区别吗? 最佳答案 always @* 是 always block 的一种类型。它用于推断组合逻辑。 始终使用 @(thought
我的 JNLP 文件是: PocketBrain zatokar PocketBrain PocketBrain
我正在编写 JUnit 测试,并希望拥有一个始终成功的 Outlook 电子邮件收件人,以及一个始终因无法送达而退回的邮件收件人。 对于“永远成功”,我认为 SMTP 相当于 NUL:会很有帮助。 (
所以,我使用 IntelliJ IDEA 在 Java 中进行编程,并且我正在试验关键字 instanceof,我的代码最终看起来像这样: public class Main { public
我有这样的代码:。我的网络有以下张量:Torch.Size([1,1536,1152])Torch.Size([1,1536,1152])。。但我总是收到运行时错误:。如果我改变我的频道大小,比方说我
我有这样的代码:。我的网络有以下张量:Torch.Size([1,1536,1152])Torch.Size([1,1536,1152])。。但我总是得到运行时错误:。如果我改变我的频道大小,比方说我
您可能知道,Microsoft Azure 网站服务下托管的网站默认配置为空闲 20 分钟后超时 (idleTimeout),并且应用程序池每 29 小时重新启动一次 (periodicRestart
我有一个具有3个功能的功能应用程序,其中每2分钟触发一次计时器。我观察到一段时间后,该函数停止被触发,但是当我进入门户网站时重新启动。 据我了解,其原因是默认情况下“始终打开”处于关闭状态。但是,当我
出于什么原因我得到了相同的结果: groovy -e "println 'Hello'.getBytes('windows-1251')" 结果 [72, 101, 108, 108, 111] 和
我有一个 winforms 应用程序,它使用多个 UserControl 填充一个可滚动区域。我的问题是,只要此应用程序 View 可见,是否始终捕获鼠标滚轮滚动?当然,这个应用程序正在为焦点而活跃。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
在iOS13下,当您为coreLocation请求.always权限(以启用后台位置(例如,地理围栏或iBeacons))时,该应用仅被授予“始终临时设置”权限,这不允许它在后台使用coreLocat
我工作的公司想在我们支持 SQL Server 的应用程序中使用 Always on 可用性组架构。我们有 3 个直接安装的数据库,其中一个按配置分区,我们目前使用 MSDTC 来协调这三个数据库之间
我正在使用 jQuery.ajax 进行 REST 调用并检索一些 JSON。它按预期工作。但是,当我强制出现错误条件(例如无效 URL)时,always 方法不会触发。如果我设置 crossDoma
我有一个相当奇怪的问题。 我有一个正在使用 CAKeyframeAnimation 制作动画的 View 。然而,动画按预期工作,一旦触发委托(delegate)的 animationDidStop:
下面的过程中,数组会在栈上分配吗? procedure One: var arr: array[0..1023] of byte; begin end; 堆栈中最大的项是多少? 访问堆栈上的变量和
我已经创建了一个容器,却忘记了在创建容器时设置--restart ='always'。 是否可以为已经创建的容器修改此选项?我知道我可以创建一个新的,但这很有用,因为它发生在我身上好几次了... 最佳
在下面显示的测试台代码中,我观察到时钟信号clk未按预期切换。时钟在时间 5 从低电平变为高电平,但此后不再切换。 module tb(); reg clk; initial begin
您能给我一些在 Hibernate session 中使用 FlushMode.ALWAYS 的实际示例吗? 谢谢 最佳答案 这几乎总是不必要的。如果在 session 中进行的修改在刷新到数据库时导
我对 C# 反射有疑问。我要反射(reflect)的对象如下: public partial class ApplicationUser : IdentityUser { public App
我是一名优秀的程序员,十分优秀!