是否可以将面板插入到wxPython中的BoxSizer中

时间:2012-08-07 09:31:51

标签: python user-interface wxpython

我正在尝试制作看起来像安装程序的东西,而不是实际安装任何东西(我用它来探索wxPython)。现在我试图将面板放在另一个面板上,但是当我做的时候窗口显示为灰色,只显示一个按钮的一角。

import wx

class PanelOne(wx.Panel):
    def __init__(self,*args,**kwargs):
        wx.Panel.__init__(self,*args,**kwargs)

    def initUI(self):
        vbox=wx.BoxSizer(wx.VERTICAL)
        vbox.Add(wx.StaticText(self,-1,'This is Panel One'),0,wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL)
        vbox.SetSizeHints(self)
        self.SetSizer(vbox)
        self.Show(True)


class Gui(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,*args,**kwargs)


        self.initUI()
        self.tTips()


    def initUI(self):
        panel=wx.Panel(self)
        self.vbox=wx.BoxSizer(wx.VERTICAL)

        panel.SetSizer(self.vbox)

        ##This is what im having trouble with
        p1=PanelOne(self)
        self.vbox.Add(p1,3,wx.ALL,10)
        ##

        btnBox=wx.BoxSizer(wx.HORIZONTAL) #This Sizer is for the box that will hold the next and back buttons.

        backBtn=wx.Button(panel,-1,'&Back')# back button
        backBtn.Bind(wx.EVT_BUTTON,self.onBack)
        btnBox.Add(backBtn,0,wx.ALL,10)
        nextBtn=wx.Button(panel,-1,'&Next')# next button
        nextBtn.Bind(wx.EVT_BUTTON,self.onNext)
        btnBox.Add(nextBtn,0,wx.ALL,10)

        self.vbox.Add(btnBox)


        self.vbox.SetSizeHints(self)
        self.Show(True)
    def onNext(self,e):
        pass
    def onBack(self,e):
        pass

    def tTips(self):
        pass
if __name__ == '__main__':
    app=wx.App()
    gui=Gui(None,-1,'Title Yo')
    app.MainLoop()

1 个答案:

答案 0 :(得分:3)

我建议使用wx.wizard.Wizard小部件,因为它基本上已经包含了你需要的所有东西。您可以阅读它here或者您可以在wxPython演示中看到一个示例(可以从wxPython网站下载)。当然,滚动自己的向导更灵活。我创建了一个骨架,以便在blog上显示一种方法。这应该让你开始。

您的问题是,当您将面板添加到sizer并且没有为面板或框架调用SetSizer时,不会添加wx.EXPAND标志。