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 が呼び出されるリンクを作成しています。それは 2 つの引数で呼び出されます - self (これはどのクラス関数にも当てはまります) とイベント自体です。関数ヘッダーを次のように変更するだけです。

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

そして、それはうまくいくはずです。

于 2013-12-11T14:50:25.843 に答える