我想知道如何将子帧保留在父帧之上,而不是模态。我尝试使用wx.FRAME_FLOAT_ON_PARENT,但我得到的是我的主框架顶部的灰框。无论我把它放在我的班级还是创建实例,结果都是一样的。
bob = DpxBob(self, title = 'DIO Info', btn = CLOSE|UPDATE, device = self.device,
size=(730, 635), tabs=tabs, style=wx.FRAME_FLOAT_ON_PARENT)
class DpxFrame(wx.Frame):
def __init__(self, parent, title, btn, device, size, tabs=None):
super(DpxFrame, self).__init__(parent, title=title, size=size,
style=wx.FRAME_FLOAT_ON_PARENT)
此外,它需要跨平台。任何帮助都会很感激。
P.S。:取得进步,但我仍然是OOP世界的新人。
答案 0 :(得分:0)
部分问题是您还需要将wx.DEFAULT_FRAME_STYLE添加到子框架的样式列表中。这是一个适合我的例子:
import wx
########################################################################
class GenericPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent, showChild=False):
"""Constructor"""
wx.Panel.__init__(self, parent)
if showChild:
btn = wx.Button(self, label="Show Child")
btn.Bind(wx.EVT_BUTTON, self.onShowChild)
#----------------------------------------------------------------------
def onShowChild(self, event):
""""""
frame = ChildFrame(self.GetParent())
frame.Show()
########################################################################
class ChildFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Frame.__init__(self, parent, title="Child frame",
style=wx.FRAME_FLOAT_ON_PARENT|wx.DEFAULT_FRAME_STYLE)
panel = GenericPanel(self)
self.Show()
########################################################################
class MainFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Main Frame", size=(800,600))
panel = GenericPanel(self, showChild=True)
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
frame = MainFrame()
app.MainLoop()
现在,如果你想将帧保持在主框架的范围内,那么你可能想要查看wx.aui中的MDI帧(或者更好的是,查看wx.lib.agw中的通用AUI) .aui)。 wxPython演示有各自的例子。