我一直在尝试为我正在编写的数据库创建一个小的python GUI。我的主GUI工作,但是我为数据输入创建的对话框会在单击按钮时抛出上述错误(GUI的其余部分似乎有效)。
下面是代码的缩减版本:
class AddDialog(wx.Dialog)
def __init__(self, *args, **kw)
super(AddDialog, self).__init__(*args, **kw)
self.InitUI()
self.SetSize((300,300))
self.SetTitle('Add')
def InitUI(self):
panel = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
st = wx.StaticText(panel, label = 'Example')
vbox.Add(st, flag = wx.ALIGN_CENTRE, border = 5)
closeButton = wx.Button(self, label = "Close")
vbox.Add(closerButton)
self.SetSizer(vbox)
closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
def OnClose():
self.Destroy()
我得到的错误信息是:
TypeError: OnClose() takes no arguments(2 given)
但是,我认为我没有给出任何论据。任何人都可以帮助这个初学者解决python不喜欢的问题吗?
提前致谢
答案 0 :(得分:1)
执行此操作时:
closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
您正在创建一个链接,如果用户单击某个按钮,该窗口将收到EVT_BUTTON事件,并且您的函数OnClose将被调用。它将使用两个参数调用它 - self(对于任何类函数都是如此)和事件本身。您只需将函数标题更改为如下所示:
def OnClose(self, event):
self.Destroy()
然后它应该工作。