我是PyQt的新手,正在努力填充QTableView控件。
我的代码如下:
def data_frame_to_ui(self, data_frame):
"""
Displays a pandas data frame into the GUI
"""
list_model = QtGui.QStandardItemModel()
i = 0
for val in data_frame.columns:
# for the list model
if i > 0:
item = QtGui.QStandardItem(val)
#item.setCheckable(True)
item.setEditable(False)
list_model.appendRow(item)
i += 1
self.ui.profilesListView.setModel(list_model)
# for the table model
table_model = QtGui.QStandardItemModel()
# set table headers
table_model.setColumnCount(data_frame.columns.size)
table_model.setHorizontalHeaderLabels(data_frame.columns.tolist())
self.ui.profileTableView.horizontalHeader().setStretchLastSection(True)
# fill table model data
for row_idx in range(10): #len(data_frame.values)
row = list()
for col_idx in range(data_frame.columns.size):
val = QtGui.QStandardItem(str(data_frame.values[row_idx][col_idx]))
row.append(val)
table_model.appendRow(row)
# set table model to table object
self.ui.profileTableView.setModel(table_model)
实际上,在代码中,我成功地填充了QListView,但是未显示我设置为QTableView的值,您还可以看到我将行截断为10,因为它永远需要显示数据帧的数百行。
那么,从熊猫数据框中填充表模型的最快方法是什么?
提前致谢。
就我个人而言,我将创建自己的模型类以使其处理起来更加容易。
例如:
import sys
from PyQt4 import QtCore, QtGui
Qt = QtCore.Qt
class PandasModel(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=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return QtCore.QVariant(str(
self._data.values[index.row()][index.column()]))
return QtCore.QVariant()
if __name__ == '__main__':
application = QtGui.QApplication(sys.argv)
view = QtGui.QTableView()
model = PandasModel(your_pandas_data)
view.setModel(model)
view.show()
sys.exit(application.exec_())
问题内容: 创建给定大小的零填充熊猫数据框的最佳方法是什么? 我用过了: 有更好的方法吗? 问题答案: 您可以尝试以下方法:
问题内容: 用伪数据填充SQL表的最快方法是什么? 我有一张宽桌子,上面有大约40种不同类型的字段(int,bit,varchar等),需要进行一些性能测试。我正在使用SQL Server 2008。 谢谢! 问题答案: RedGate的SQL数据生成器 一键生成数据 基于列和表名称的真实数据 如果需要,可以自定义数据 消除了数小时的繁琐工作 完全支持SQL Server 2008
问题内容: 我有一个像这样的熊猫数据框“ df”: 它丢失了一些行,我想像这样填补中间的空白: 有python方式可以做到这一点吗? 问题答案: 您需要构造完整索引,然后使用数据框的方法。像这样 然后,您可以使用该方法将NaN设置为所需的值。 更新(2014年6月) 只是必须自己重新审视一下……在当前版本的熊猫中,有一个函数可以从可迭代的笛卡尔积中构建。因此上述解决方案可能变为: 我认为这很优雅。
这是我的代码只有第一个下拉框正在填充。我可以重复下拉框,但无法填充所有下拉框。请帮帮我... 我可以重复下拉框,但无法填充所有下拉框。请帮帮我... 我想将数据库中的数据显示到所有下拉框中,并保存所选值。我使用的提交按钮不起作用,请告诉我原因?
我想在一个组合框中填充一些数据。这很好。但是,我想动态地改变组合框中的数据。 目前我有一个表,在组合框中,我在表列中显示数据的唯一值。现在,表数据存储在静态可观察列表变量中。我想根据表中显示的数据更改组合框中的数据。也就是说,如果存储表数据的静态可观察列表发生更改,我希望在没有手动干预的情况下更改组合框数据。 如果没有单独的静态变量用于组合框,这是否可能?
series(string $value,[ string $categories]) string $value $config = ['path' => './tests']; $fileObject = new \Vtiful\Kernel\Excel($config); $fileObject = $fileObject->fileName('tutorial.xlsx'); $