Найти - Пользователи
Полная версия: wxPython Grid: есть ли аналог DataProvider из flex?
Начало » GUI » wxPython Grid: есть ли аналог DataProvider из flex?
1
axe
Во flex при работе с таблицами нужно устанавливать DataProvider (массив объектов).
Данные из DataProvider-a отображаются внутри соответствующих колонок.
При изменении данных внутри DataProvider-a, автоматически обновляется отрисованная таблица.

Вопрос - есть ли аналог DataProvider-а при работе с какими-либо таблицами wxPython? (не обязательно wx.grid.Grid)
PooH
wx.grid.PyGridTableBase
axe
смотрю такую доку: http://wiki.wxpython.org/wxPyGridTableBase
SetAttrProvider на вход принимает wxGridCellAttrProvider
сейчас буду искать по гуглу wxGridCellAttrProvider. если иду не в том направлении, просьба вразумить.
спасибо.
axe
кажется, не туда пошёл… PyGridTableBase и wxPyGridTableBase - это ведь разные вещи?
PooH
axe
кажется, не туда пошёл… PyGridTableBase и wxPyGridTableBase - это ведь разные вещи?
Да нет, одна и та же. Посмотрите 14 главу “wxPython in Action”, есть и на русском. Да и тут на форуме примеры есть.
axe
PooH
Посмотрите 14 главу “wxPython in Action”
PooH, спасибо!

глянул сейчас мельком в “wxPython in Action”, запустил пример оттуда, позже посмотрю подробнее. как я понял, есть два типа классов:
1. Grid - это визуальная таблица, которая непосредственно отображается на экране.
2. таблица Grid может быть связана с невизуальным классом GridTableBase, из которого будут браться данные, через метод grid.SetTable(table, True).

получается, GridTableBase - довольно удобная штука, с помощью которой можно доставать данные из любой своей структуры.
если в процессе работы изменить данные внутри GridTableBase.data, в визуальной таблице Grid данные должны обновиться автоматически или нужно перерисовать Grid?
PooH
axe
если в процессе работы изменить данные внутри GridTableBase.data, в визуальной таблице Grid данные должны обновиться автоматически или нужно перерисовать Grid?
Grid`у надо из модели сообщение послать GRIDTABLE_NOTIFY_ROWS_APPENDED. GRIDTABLE_NOTIFY_ROWS_DELETED, GRIDTABLE_NOTIFY_COLS_APPENDED. GRIDTABLE_NOTIFY_COLS_DELETED, GRIDTABLE_REQUEST_VIEW_GET_VALUES
что-то типа такого:
msg = wx.grid.GridTableMessage(self, wx.grid.GRIDTABLE_REQUEST_VIEW_GET_VALUES)
self.GetView().ProcessTableMessage(msg)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB