0

我正在尝试制作看起来像安装程序的东西而没有实际安装任何东西(我正在使用它来探索 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()
4

1 回答 1

3

我建议使用 wx.wizard.Wizard 小部件,因为它基本上已经内置了您需要的一切。你可以在这里阅读它,或者你可以在 wxPython 演示中看到一个例子(可以从 wxPython 网站下载)。当然,滚动您自己的向导要灵活得多。我创建了一个骨架来在我的博客上展示一种方法。那应该让你开始。

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

于 2012-08-07T13:35:14.663 回答