2011-08-02 7 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

효과가 있습니다. 정말 고마워! –