PyQt4: привязка данных? - PullRequest
3 голосов
/ 26 февраля 2009

Переход от мира .NET к Python и PyQt4. Интересно, знаком ли кто-нибудь с какой-либо функциональностью, которая позволила бы мне связывать данные с виджетами Qt? Например (используя sqlalchemy для данных):

gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems

Возможна ли такая вещь?

Ответы [ 2 ]

4 голосов
/ 27 февраля 2009

Хотя это и не прямая замена, вам может быть полезно взглянуть на класс QDataWidgetMapper:

http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html

Если вы не боитесь читать код C ++, этот пример также может оказаться полезным:

https://doc.qt.io/qt-4.8/qt-sql-sqlwidgetmapper-example.html

Обратите внимание, что преобразователь работает в рамках Qt Model / View. В этом примере модель просто является моделью базы данных SQL.

3 голосов
/ 27 февраля 2009

В одной опции будет функция, которая возвращает объект списка (или кортеж) из запроса, а затем использует его для обновления QListWidget. Помните, что QListWidget хранит QListStrings. Ваша функция обновления может выглядеть так:

def updateQListWidget(qlistwidget, values):
        """ Updates a QListWidget object with a list of values
        ARGS:
            qlistwidget  - QListWidget object
            values       - list of values to add to list widget
        """
        qlistwidget.clear()
        qlist = QtCore.QStringList()
        for v in values:
            s = QtCore.QString(v)
            qlist.append(s)
        qlistwidget.addItems(qlist) 
...