使用 wx.Simplebook 给我退出代码 3221225477
using a wx.Simplebook giving me exit code 3221225477
我正在尝试使用 wx.Simplebook
,据我所知,我基本上已经复制了 python 演示,但显然缺少一些重要的东西。
这个例子左边应该是wx.Frame
with two 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()
一半时间构建暂停,没有任何显示(尽管我收到 'Finished in 2.0 seconds' 消息),另一半时间我收到错误代码 3221225477。
如果你#行pagesSizer.Add(book,1,wx.EXPAND)
,框架按计划打开,但显然没有简单的书。
我哪里做错了?
谢谢,
日落
欢迎使用 Whosebug。
您的代码只缺少一些细节。首先,类 的缩进是错误的。它们都应该从第一列开始。该代码表明(至少对我而言)您正在考虑 BookTest
、Page1
和 Page2
作为 MainPage
的子 类。但这不是正确的思考方式。它们都是独立的 类 并且您将在 MainPage
中使用 BookTest
和 BookTest
的实例将使用 Page1
的实例和 [=13 的实例=].
更改此项会导致将行 book = MainPage.BookTest(self)
更改为 book = BookTest(self)
第二个问题是您需要跟踪小部件的 parent/child 关系,因为这对正确显示它们有很大帮助。因此,在BookTest
and Page1
and Page2
.[=28中启动wx.Simplebook
and wx.Panel
widget时需要传递parent
参数=]
这是代码,
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()
我正在尝试使用 wx.Simplebook
,据我所知,我基本上已经复制了 python 演示,但显然缺少一些重要的东西。
这个例子左边应该是wx.Frame
with two 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()
一半时间构建暂停,没有任何显示(尽管我收到 'Finished in 2.0 seconds' 消息),另一半时间我收到错误代码 3221225477。
如果你#行pagesSizer.Add(book,1,wx.EXPAND)
,框架按计划打开,但显然没有简单的书。
我哪里做错了?
谢谢,
日落
欢迎使用 Whosebug。
您的代码只缺少一些细节。首先,类 的缩进是错误的。它们都应该从第一列开始。该代码表明(至少对我而言)您正在考虑 BookTest
、Page1
和 Page2
作为 MainPage
的子 类。但这不是正确的思考方式。它们都是独立的 类 并且您将在 MainPage
中使用 BookTest
和 BookTest
的实例将使用 Page1
的实例和 [=13 的实例=].
更改此项会导致将行 book = MainPage.BookTest(self)
更改为 book = BookTest(self)
第二个问题是您需要跟踪小部件的 parent/child 关系,因为这对正确显示它们有很大帮助。因此,在BookTest
and Page1
and Page2
.[=28中启动wx.Simplebook
and wx.Panel
widget时需要传递parent
参数=]
这是代码,
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()