【发布时间】:2013-01-28 19:49:07
【问题描述】:
我基本上有 3 个独立的 wxPython GUI,我想将它们组合成一个应用程序,为每个 GUI 提供自己的笔记本选项卡。我不确定如何做到这一点,我正在寻找一些建议。我很感激我能得到的任何想法或想法。
我的想法是它应该看起来像这样:
import wx
import OtherFrame
class PageOne(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageOne object", (20,20))
panel=OtherFrame.Panel(parent)
box = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(self,box)
panel.Layout(self, parent)
class PageTwo(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageTwo object", (40,40))
class PageThree(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
t = wx.StaticText(self, -1, "This is a PageThree object", (60,60))
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Simple Notebook Example")
p = wx.Panel(self)
nb = wx.Notebook(p)
page1 = PageOne(nb)
page2 = PageTwo(nb)
page3 = PageThree(nb)
nb.AddPage(page1, "Page 1")
nb.AddPage(page2, "Page 2")
nb.AddPage(page3, "Page 3")
sizer = wx.BoxSizer()
sizer.Add(nb, 1, wx.EXPAND)
p.SetSizer(sizer)
if __name__ == "__main__":
app = wx.App()
MainFrame().Show()
app.MainLoop()
但这会产生一些错误和崩溃。如果没有 PageOne 下的 sizer,它只会在右上角放置一个灰色方块,使用它们,它会崩溃。
提前致谢!
【问题讨论】:
-
其实你已经不需要PageOne、二、三类了。您在 OtherFrame 中有一个 Panel 类。所以你应该可以做 page1 = OtherFrame.Panel(nb)
-
太棒了!这完美!非常感谢!!!
标签: python wxpython wxwidgets wxnotebook