wxpython框架在上面

时间:2011-07-08 23:42:09

标签: python wxpython

如何创建一个位于所有其他窗口之上的框架?我也不希望将框架创建为顶部窗口,我希望用户有一个可以点击的按钮,这样框架就会处于顶部模式,如果再次点击它,那么它就变成了一个正常的框架!

我尝试使用

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不存在。

由于

5 个答案:

答案 0 :(得分:10)

我想你可能想看看像

这样的东西

self.ToggleWindowStyle(wx.STAY_ON_TOP)

http://docs.wxwidgets.org/stable/wx_wxwindow.html#wxwindowtogglewindowstylehttp://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)