PyQt4:数据绑定?

时间:2009-02-26 20:55:38

标签: python data-binding qt4 pyqt4

从.NET世界到Python和PyQt4。想知道是否有人熟悉允许我将数据绑定到Qt小部件的任何功能?例如(使用sqlalchemy作为数据):

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

这样的事情可能吗?

2 个答案:

答案 0 :(得分:4)

虽然不是直接替换,但您可能会发现查看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数据库模型。

答案 1 :(得分:3)

一个选项将具有从查询返回列表(或元组)对象的函数,然后使用它来更新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)