相关疑难解决方法(0)

PyQt - 使用 pandas DataFrame 在 QAbstractTableModel (QTableView) 中加载 SQL - 在 GUI 中编辑数据

我对 python 和使用都很陌生WinPython-32bit-2.7.10.3(包括QTDesigner 4.8.7。我正在尝试使用 QtableViews 编写一个接口,以便在两个独立的项目上使用 sqlite 数据库。

\n\n

该算法大致如下:
\n- 连接到数据库并将数据转换为pandas.DataFrame
\n- 将 DataFrame 转换为 QAbstractTableModel
\n- 将 QAbstractTableModel 应用到tableview.model
\n- 加载对话框

\n\n

我没有得到相同的行为,具体取决于用于创建数据帧的 sql:\n给定一个 SQL 表“参数”,具有 3 个字段(LIBELLE 作为 varchar,VALEUR 作为 varchar,TEST 作为布尔值),尝试的 sql 是:

\n\n
    \n
  • \'从参数中选择 LIBELLE AS "Param\xc3\xa8tre", VALEUR AS "Valeur"\'.encode("utf-8")
  • \n
  • \'SELECT * FROM 参数\'.encode("utf-8")
  • \n
\n\n

通过第一个请求,我可以编辑表格视图内的数据。对于第二个请求,我可以选择一个“单元格”,对其进行编辑,但是当我提交版本(按 Enter 键)时,数据将设置回其第一个值。

\n\n

在搜索时,我发现无论“任何”值是什么,setData 代码的这一行都不起作用:

\n\n
self._data.values[index.row()][index.column()] = "anything"\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过删除主代码中第27行开头的#字符来测试sql源的发生率。

\n\n

我已将代码截断到严格的最低限度(非常接近我的第一个项目的原始工作代码),并且我感到非常困惑。如果有人有想法,那就太好了!

\n\n

谢谢

\n\n

PS:我后来发布了代码,但我还没有找到加入的方法sqlite.db...如果有人可以指导我,我会很高兴添加它;与此同时,我已经在我的google.drive上加入了该地段的整个 …

python pyqt qtableview python-2.7 pandas

6
推荐指数
1
解决办法
2543
查看次数

可编辑 QTableView 中的 Pandas df:删除复选框

我有一个 pandas 数据框,我想将其呈现在 QtableView 中并使其可编辑。我创建了以下模型,但由于某种原因,输出在每个字段中都有复选框。我怎样才能摆脱它们?

输出看起来像这样: 在此输入图像描述

这是用于制作 qtavleview 中显示的 pandas 数据框并使其可编辑的模型(我正在使用 PySide)

class PandasModelEditable(QtCore.QAbstractTableModel):
    def __init__(self, data, parent=None):
        QtCore.QAbstractTableModel.__init__(self, parent)
        self._data = data

    def rowCount(self, parent=None):
        return len(self._data.values)

    def columnCount(self, parent=None):
        return self._data.columns.size

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if index.isValid():
            if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
                return unicode(self._data.iloc[index.row(), index.column()])
        return unicode()

    def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.DisplayRole:
            return None
        if orientation == QtCore.Qt.Horizontal:
            try:
                return '%s' % unicode(self._data.columns.tolist()[section])
            except (IndexError,):
                return unicode()
        elif orientation == QtCore.Qt.Vertical: …
Run Code Online (Sandbox Code Playgroud)

python model qtableview pyside pandas

3
推荐指数
1
解决办法
541
查看次数

标签 统计

pandas ×2

python ×2

qtableview ×2

model ×1

pyqt ×1

pyside ×1

python-2.7 ×1