我正在尝试使用wxPython创建像Wordpress中的类别面板。
我想弄清楚的是,当用户点击按钮时如何添加小部件(如“添加新类别”)
这是我的代码:
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()
我的问题是,按钮被添加到上一个按钮的顶部。我对此感到很神秘,因为如果我删除event
函数的add()
参数,然后在__init__
方法self.add()
中调用它,它就可以了。但这对我没有任何帮助,因为我需要在用户点击按钮时添加小部件。
非常感谢任何帮助。
答案 0 :(得分:0)
添加按钮后调用self.panel.Layout()
。当您使用子项调整窗口大小时会自动调用此函数(使用当前代码尝试),但在向其添加小部件时则不会。