使用wx.Simplebook给我退出代码3221225477

时间:2019-06-07 08:41:06

标签: wxpython

我正在尝试使用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),则框架按计划打开,但显然没有简单手册。 我在哪里弄错了?

谢谢

日落

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow。

您的代码缺少一些细节。首先,类的缩进是错误的。它们都应从第一列开始。该代码表明(至少对我而言),您正在考虑将BookTestPage1Page2作为MainPage的子类。但这不是思考的正确方法。它们都是独立的类,您将在MainPage中使用,BookTest的实例和BookTest将使用Page1的实例和Page2的实例。 / p>

更改此操作将把行book = MainPage.BookTest(self)更改为book = BookTest(self)

第二个问题是您需要跟踪小部件的父/子关系,因为这有助于正确显示它们。因此,在parentwx.Simplebookwx.Panel中启动BookTestPage1小部件时,需要传递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()