0

我一直在尝试为我正在编写的数据库创建一个小的 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 不喜欢的东西吗?

提前致谢

4

1 回答 1

1

当你这样做时:

         closeButton.Bind(wx.EVT_BUTTON, self.OnClose)

您正在创建一个链接,如果用户单击一个按钮,窗口将收到一个 EVT_BUTTON 事件,并且您的函数 OnClose 将被调用。它将使用两个参数调用它——self(对于任何类函数都是如此)和事件本身。您只需将函数头更改为如下所示:

def OnClose(self, event):
    self.Destroy()

然后它应该工作。

于 2013-12-11T14:50:25.843 回答