如何创建一个位于所有其他窗口之上的框架?我也不希望将框架创建为顶部窗口,我希望用户有一个可以点击的按钮,这样框架就会处于顶部模式,如果再次点击它,那么它就变成了一个正常的框架!
我尝试使用
frame= wx.Frame.__init__(self, None, -1, 'Hello',wx.DefaultPosition,(400,500),style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX)
self.SetTopWindow(self.frame)
但我得到一个错误,说self.SetTopWindow不存在。
由于
答案 0 :(得分:10)
我想你可能想看看像
这样的东西self.ToggleWindowStyle(wx.STAY_ON_TOP)
http://docs.wxwidgets.org/stable/wx_wxwindow.html#wxwindowtogglewindowstyle 和 http://docs.wxwidgets.org/stable/wx_wxframe.html#wxframe
答案 1 :(得分:2)
您肯定需要wx.STAY_ON_TOP样式,但我不知道您是否可以在创建帧后实际应用该样式。请注意,如果您在 init 中创建框架时使用该样式,则只会获得该样式,并且您将没有标题栏或按钮。所以你通常应该这样做:
wx.Frame.__init__(self, None, style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP)
答案 2 :(得分:2)
这是一个古老的问题,但记录使用:
self.SetWindowStyle(wx.STAY_ON_TOP)
答案 3 :(得分:0)
我认为你想要的是Z-order。谷歌搜索wxpython窗口z得到了这个:http://wxpython-users.1045709.n5.nabble.com/Bringing-a-Window-to-the-Top-td2289667.html
http://docs.wxwidgets.org/trunk/classwx_window.html#54808c933f22a891c5db646f6209fa4d有这样的说法:
virtual void wxWindow::Raise ( ) [virtual]
Raises the window to the top of the window hierarchy (Z-order).
Notice that this function only requests the window manager to raise this window to the top of Z-order. Depending on its configuration, the window manager may raise the window, not do it at all or indicate that a window requested to be raised in some other way, e.g. by flashing its icon if it is minimized.
Remarks:
This function only works for wxTopLevelWindow-derived classes.
答案 4 :(得分:0)
尝试创建没有wx.STAY_ON_TOP样式的UI,然后在类中使用以下内容在样式之间进行切换-确保在初始化UI时调用set_style。
def set_style( self, event = None ):
self.old_style = self.GetWindowStyle()
def stay_on_top( self, event=None ):
self.SetWindowStyle(self.old_style | wx.STAY_ON_TOP)
def cancel_on_top( self, event = None ):
self.SetWindowStyle(self.old_style)
或者如果您正在使用复选框
def stay_on_top( self, event = None ):
if self.c_ontop.IsChecked():
self.SetWindowStyle(self.old_style | wx.STAY_ON_TOP)
else:
self.SetWindowStyle(self.old_style)