2011-08-02 24 views
0

我想用wxPython在Wordpress中創建類似的面板。用按鈕添加一個小部件 - wxPython

我試圖弄清楚,是如何當用戶點擊一個按鈕添加窗口小部件(如「添加新類別」)

這裏是我的代碼:

import wx 

class MainWindow(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(300,200)) 

     self.panel = wx.Panel(self, -1) 

     button = wx.Button(self.panel,-1,"Button") 

     self.vbox = wx.BoxSizer(wx.VERTICAL) 
     self.vbox.Add(button) 

     add_btn = wx.Button(self.panel,-1,"Add") 
     add_btn.Bind(wx.EVT_BUTTON, self.add) 

     hbox = wx.BoxSizer(wx.HORIZONTAL) 
     hbox.Add(add_btn) 

     main_vbox = wx.BoxSizer(wx.VERTICAL) 
     main_vbox.Add(self.vbox) 
     main_vbox.Add(hbox) 

     self.panel.SetSizer(main_vbox) 

     self.Centre() 
     self.Show(True) 

    def add(self,event): 
     self.vbox.Add((wx.Button(self.panel,-1,"Button"))) 

if __name__ == "__main__": 
    app = wx.App() 
    MainWindow(None, -1, 'Add a Button') 
    app.MainLoop() 

我問題是,該按鈕被添加到上一個按鈕的頂部。我很困惑,因爲如果我刪除add()函數的event參數,然後在__init__方法self.add()中調用它,它工作正常。但是這對我沒有任何幫助,因爲我需要在用戶單擊按鈕時添加小部件。

任何幫助,非常感謝。

回答

0

添加按鈕後調用self.panel.Layout()。當您使用子級調整窗口大小時(使用當前代碼嘗試使用此功能),會自動調用此函數,但在向其添加小部件時不會。

+0

它的工作!非常感謝! –

相關問題