2012-09-19 6 views
3

的顶部我希望我的框架始终在最前面,但我希望它是真正的顶部。我不想让其他窗口隐藏它,即使它们也“始终在最上面”。我正在使用wx.STAY_ON_TOPwx.FRAME_FLOAT_ON_PARENT,但仍然有窗口出现在我的顶部。此外,任务栏出现在我的框架之上,而我希望它在我的框架后面。wxPython的:制作一个框架上的一切

我已经尝试了很多事情,没有工作,详细here

不知道如何让我的框架真的在上面?

+0

会使其全屏幕,然后最小化不允许足够?您是仅针对Windows还是答案需要在Gtk和Mac上运行? –

+0

您是否希望用户能够访问任务栏? –

+0

@PaulMcNett用户不需要能够访问任务栏。预计该解决方案仅限于Windows。全屏不是一种选择,因为有些时候帧不应该是全屏。 –

回答

1

因为他们是这样做的,因为它是最常见的不良影响的标准方法,你都不可能通过频繁地重新设置最上面的标志,以“否决”走出的最顶端位置的任何其他应用程序实现这一目标。您可以使用一个计时器来设置每x毫秒的值,或者您可以尝试仅在窗口失去焦点时再次设置ontop标志。设置ontop的标志的事件有:

EVT_SET_FOCUS 
EVT_KILL_FOCUS 
+0

进展!现在我的应用程序正在与Rosetta Stone不断斗争,这显然是在做同样的事情,不断地把自己放在首位。这场拔河的结果是,整个屏幕闪烁,使整个电脑无法使用。我在想,解决方案可能是阻止Rosetta Stone这样做。有没有办法做到这一点? –

+0

@RamRachum你可以尝试不断地删除总是在Rosetta Stone的顶部标志,但我不知道如何从Python做到这一点,我知道如何从AutoIt中完成它:http://www.autoitscript.com /autoit3/docs/functions/WinSetOnTop.htm 但是就像你已经说了,这将继续成为一场拉锯战,我不认为你实际上可以使罗塞塔石碑没收。 – zeebonk

+0

太棒了!我使用AHK来创建一个脚本,使活动应用程序不总是在顶部,我只是手动在Rosetta Stone上使用它,并且它可以工作。现在我的应用程序在Rosetta Stone之上。 –

0

尝试使用这样的:

wx.Frame.SetFocus()