如何使用wxBoxers在框架内排列wxWidgets?

时间:2012-07-04 14:27:05

标签: python wxpython wxwidgets

我正在尝试使用wxSizer在面板中排列小部件。我可以看到小部件被安排但是它们没有进入框架内部。谁能告诉我我做错了什么?

import wx

class MyRegion(wx.Frame):
    def __init__(self):        
        wx.Frame.__init__(self, None, -1)

        self.panel = wx.Panel(self,-1,pos=(70,200), size=(300,300))
        self.panel.SetBackgroundColour((128,128,128)) # dark grey       

        sizer = wx.BoxSizer(wx.VERTICAL)

        b1 = wx.Button(self, label="TEXT1")
        b2 = wx.Button(self, label="TEXT2")
        b3 = wx.Button(self, label="TEXT3")

        sizer.Add(b1)
        sizer.Add(b2)
        sizer.Add(b3)

        self.panel.SetSizer(sizer)
        sizer.Fit(self.panel)


if __name__ == "__main__":
    app = wx.PySimpleApp()
    myRegion = MyRegion()
    myRegion.Show()
    app.MainLoop()   

1 个答案:

答案 0 :(得分:1)

您应该将面板设为按钮的父级而不是框架。

b1 = wx.Button(self.panel, label="TEXT1")

原因是虽然sizer控制项目的定位,但UI中的父/子关系仍然由直接映射到底层OS控件的wx对象控制。