我正在尝试使用wx.Simplebook
来解决问题,据我所知,我基本上已经复制了python演示,但是显然缺少了一些重要内容。
此示例应为wx.Frame
,左侧有两个wx.Buttons
,右侧是wx.Simplebook
。这两个按钮应在书页之间切换。
import wx
class MainPage (wx.Frame):
def __init__ (self,parent):
wx.Frame.__init__ ( self, None, 1, title = "NOTEBOOK", pos= wx.DefaultPosition, size = wx.Size( 320,400 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
buttonSizer = wx.BoxSizer(wx.VERTICAL)
pagesSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(buttonSizer,1,wx.EXPAND,0)
mainSizer.Add(pagesSizer,1,wx.EXPAND,0)
page1Button = wx.Button(self,wx.ID_ANY,"Page 1",wx.DefaultPosition,wx.DefaultSize,0)
page2Button = wx.Button(self,wx.ID_ANY,"Page 2",wx.DefaultPosition,wx.DefaultSize,0)
buttonSizer.Add(page1Button,1,0)
buttonSizer.Add(page2Button,1,0)
book = MainPage.BookTest(self)
pagesSizer.Add(book,1,wx.EXPAND)
self.SetSizer(mainSizer)
self.Layout()
class BookTest (wx.Simplebook):
def __init__(self,parent):
wx.Simplebook.__init__(self,parent)
page1=MainPage.Page1(self)
page2=MainPage.Page2(self)
self.AddPage(page1,"")
self.AddPage(page2,"")
class Page1 (wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self)
sizer = wx.BoxSizer(wx.VERTICAL)
t=wx.StaticText(self,-1,"THIS IS PAGE 1")
sizer.Add(t,1,wx.EXPAND,0)
class Page2 (wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self)
sizer = wx.BoxSizer(wx.VERTICAL)
t=wx.StaticText(self,-1,"THIS IS PAGE 2")
sizer.Add(t,1,wx.EXPAND,0)
if __name__ == '__main__':
app = wx.App()
frm = MainPage(None)
frm.Centre()
frm.Show()
app.MainLoop()
一半的构建时间暂停了,什么也没显示(尽管我收到了“ 2.0秒内完成”消息),另一半的时间我得到了错误代码3221225477。
如果您#行pagesSizer.Add(book,1,wx.EXPAND)
,则框架按计划打开,但显然没有简单手册。
我在哪里弄错了?
谢谢
日落
答案 0 :(得分:0)
欢迎使用StackOverflow。
您的代码缺少一些细节。首先,类的缩进是错误的。它们都应从第一列开始。该代码表明(至少对我而言),您正在考虑将BookTest
,Page1
和Page2
作为MainPage
的子类。但这不是思考的正确方法。它们都是独立的类,您将在MainPage
中使用,BookTest
的实例和BookTest
将使用Page1
的实例和Page2
的实例。 / p>
更改此操作将把行book = MainPage.BookTest(self)
更改为book = BookTest(self)
第二个问题是您需要跟踪小部件的父/子关系,因为这有助于正确显示它们。因此,在parent
和wx.Simplebook
和wx.Panel
中启动BookTest
和Page1
小部件时,需要传递Page2
参数。
这是代码,
import wx
class MainPage (wx.Frame):
def __init__ (self,parent):
wx.Frame.__init__ ( self, None, 1, title = "NOTEBOOK", pos= wx.DefaultPosition, size = wx.Size( 320,400 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL)
mainSizer = wx.BoxSizer(wx.HORIZONTAL)
buttonSizer = wx.BoxSizer(wx.VERTICAL)
pagesSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(buttonSizer,1,wx.EXPAND,0)
mainSizer.Add(pagesSizer,1,wx.EXPAND,0)
page1Button = wx.Button(self,wx.ID_ANY,"Page 1",wx.DefaultPosition,wx.DefaultSize,0)
page2Button = wx.Button(self,wx.ID_ANY,"Page 2",wx.DefaultPosition,wx.DefaultSize,0)
buttonSizer.Add(page1Button,1,0)
buttonSizer.Add(page2Button,1,0)
book = BookTest(self)
pagesSizer.Add(book,1,wx.EXPAND)
self.SetSizer(mainSizer)
self.Layout()
class BookTest (wx.Simplebook):
def __init__(self, parent):
wx.Simplebook.__init__(self, parent=parent)
page1=Page1(self)
page2=Page2(self)
self.AddPage(page1,"")
self.AddPage(page2,"")
class Page1 (wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent)
sizer = wx.BoxSizer(wx.VERTICAL)
t=wx.StaticText(self,-1,"THIS IS PAGE 1")
sizer.Add(t,1,wx.EXPAND,0)
class Page2 (wx.Panel):
def __init__(self,parent):
wx.Panel.__init__(self, parent=parent)
sizer = wx.BoxSizer(wx.VERTICAL)
t=wx.StaticText(self,-1,"THIS IS PAGE 2")
sizer.Add(t,1,wx.EXPAND,0)
if __name__ == '__main__':
app = wx.App()
frm = MainPage(None)
frm.Centre()
frm.Show()
app.MainLoop()