3

したがって、データ行を含む wxPython ListCtrl があります。行の 1 つがクリックされたときに、行の内容で関数を呼び出すイベントを作成するにはどうすればよいですか?

4

1 に答える 1

11

この関数を使用してBind、メソッドをイベントにバインドできます。例えば、

import wx

class MainWidget(wx.Frame):

    def __init__(self, parent, title):
        super(MainWidget, self).__init__(parent, title=title)

        self.list = wx.ListCtrl(parent=self)
        for i,j in enumerate('abcdef'):
            self.list.InsertStringItem(i,j)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnClick, self.list)

        self.Layout()

    def OnClick(self, event):
        print event.GetText()



if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MainWidget(None, "ListCtrl Test")
    frame.Show(True)
    app.MainLoop()

このアプリは、(Enter キーを押すかダブルクリックして) アクティブ化された ListCtrl 内の項目を印刷します。単一のクリック イベントをキャッチしたいだけの場合は、 を使用できますwx.EVT_LIST_ITEM_SELECTED

重要な点は、Bind関数が特定のイベントが発生したときに呼び出されるメソッドを指定することです。イベント処理に関する wxPython 入門ガイドのセクションを参照してください。ウィジェットが使用するイベントについては、ListCtrlのドキュメントも参照してください。

于 2011-07-27T14:53:21.230 に答える