質問

そのため、データの行を含むwxpython listctrlがあります。クリックした場合に行の1つが行われたときに、行の内容を使用して関数を呼び出すイベントを作成するにはどうすればよいですか?

役に立ちましたか?

解決

使用できます 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()

このアプリは、アクティブ化されているlistctrlにアイテムを印刷します(Enterを押すかダブルクリックすることにより)。シングルクリックイベントをキャッチしたい場合は、使用できます wx.EVT_LIST_ITEM_SELECTED.

重要な点は、 Bind 関数特定のイベントが発生したときに呼び出される方法を指定します。 WXPYTHONのセクションを参照してくださいガイド イベント処理. 。また、ドキュメントを参照してください listctrl ウィジェットが使用するイベントの場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top