boxsizer里面的wxpython笔记本

时间:2013-07-28 13:08:10

标签: python wxpython sizer wxnotebook boxsizer

这段代码有什么问题?我正在尝试将笔记本放在由boxsizer控制的面板上。我是wxpython的新手,无法弄清楚我做错了什么。当我跑它时,它只是在角落弄得一团糟:(

import wx


class TestNoteBook(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(600, 500))



        panel = wx.Panel(self)

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        leftpanel = wx.Panel(panel)

        notebook = wx.Notebook(leftpanel)

        posterpage = wx.Panel(notebook)
        listpage = wx.Panel(notebook)
        notebook.AddPage(posterpage, 'posters')
        notebook.AddPage(listpage, 'list')

        hsizer.Add(leftpanel, 1, wx.EXPAND)

        rightpanel = wx.Panel(panel)

        hsizer.Add(rightpanel, 1, wx.EXPAND)

        panel.SetSizer(hsizer)




app = wx.App()
frame = TestNoteBook(None, -1, 'notebook')
frame.Show()
app.MainLoop()

1 个答案:

答案 0 :(得分:2)

为左侧面板设置sizer。请参阅下面的代码(特别是### Added code ( ... ### Added code)之间的代码。)

import wx

class TestNoteBook(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(600, 500))
        panel = wx.Panel(self)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        leftpanel = wx.Panel(panel)
        notebook = wx.Notebook(leftpanel)
        posterpage = wx.Panel(notebook)
        listpage = wx.Panel(notebook)
        notebook.AddPage(posterpage, 'posters')
        notebook.AddPage(listpage, 'list')
        hsizer.Add(leftpanel, 1, wx.EXPAND)
        rightpanel = wx.Panel(panel)
        hsizer.Add(rightpanel, 1, wx.EXPAND)

        ##### Added code (
        leftpanel_sizer = wx.BoxSizer(wx.HORIZONTAL)
        leftpanel_sizer.Add(notebook, 1, wx.EXPAND)
        leftpanel.SetSizer(leftpanel_sizer)

        rightpanel.SetBackgroundColour('blue') # not needed, to distinguish rightpanel from leftpanel
        ##### Added code )

        panel.SetSizer(hsizer)


app = wx.App()
frame = TestNoteBook(None, -1, 'notebook')
frame.Show()
app.MainLoop()