0

我正在尝试使用 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()   
4

1 回答 1

1

您应该使面板成为按钮的父级,而不是框架。

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

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

于 2012-07-04T14:33:35.727 回答