wxPython wx.ListCtrl с конкретными данными

Я хочу добавить в wx.ListCtrl из элементов wxPython, которые имеют определенный идентификатор, связанный с ними. Как я могу этого достичь? На самом деле, как вы связываете какие-либо данные с конкретным элементом ListCtrl?

2 ответа

Решение

Я хотел бы создать словарь, в котором ключи являются идентификаторами, а затем использовать SetItemData ListCtrl, чтобы связать ключ с элементом управления списком. Затем вы можете использовать метод GetItemData для получения идентификатора и использовать его со своим словарем для получения данных.

Или вы могли бы использовать ListCtrlPyDataMixin что сделало бы это немного проще:

Лично мне действительно нравится использовать ObjectListView вместо прямого wx.ListCtrl. Вот учебник о том, как это работает:

И, как упоминалось @nepix32, вы также можете использовать wx.DataViewCtrl, если у вас есть wxPython 2.9 или новее.

В основном вы можете связать long с wx.ListCtrl Методы.SetItemData и .GetItemData (например, для row_id из базы данных.

Однако, если у вас довольно недавний wxPython (>= 2.9), вам лучше справиться с wx.DataViewCtrl, Он более мощный и простой в программировании, чем ListCtrl, и он приносит PyDataViwModel с ним, что позволяет сопоставить объекты с элементами просмотра.

Ближе к ListCtrl находится wx.DataViewListCtrl что очень похоже на wx.ListCtrl в объеме функции.

Другие вопросы по тегам