Событие wxPython ListCtrl OnClick - PullRequest
3 голосов
/ 26 июля 2011

Итак, у меня есть wxPython ListCtrl, который содержит строки данных.Как я могу создать событие, которое вызывает функцию с содержимым строки, если щелкнуть одну из строк?

1 Ответ

9 голосов
/ 27 июля 2011

Вы можете использовать функцию 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, который активирован (нажав клавишу ввода или двойной щелчок). Если вы просто хотите поймать событие одного клика, вы можете использовать wx.EVT_LIST_ITEM_SELECTED.

Важным моментом является то, что функция Bind определяет метод, который вызывается при наступлении определенного события. См. Раздел руководства по началу работы с wxPython по обработке событий . Также см. Документы по ListCtrl для событий, которые использует виджет.

...