gpt4 book ai didi

python - 从 CSV 文件填充 QTreeWidget - PySide/PyQt

转载 作者:行者123 更新时间:2023-11-30 23:31:26 25 4
gpt4 key购买 nike

你好,

我正在使用 PySide 和一堆 QWidget 构建一个多窗口应用程序。我有一个 QTreeWidget,我想用 CSV 文件中的项目填充它。 TreeWidget 有 3 列(静态)和动态行数。

到目前为止,我一直在手动填充 QTreeWidget,但我开始从纯粹的美观系统转向功能系统。这是我一直在使用的:

items = QtGui.QTreeWidgetItem(self.treeWidgetLog)
items.setText(0, "Item 1")
items.setText(1, "Item 2")
items.setText(2, "Item 3")

这只适用于添加一行,但到目前为止已经足够了。

过去,我在 Python 中广泛使用了 csv 文件,但我不确定如何使用 CSV 中的条目填充 QTreeWidget。我对此做了一些研究,但到目前为止还没有发现任何具体的东西。我的基本解释是这样的:

with open('Log.csv', 'rt') as f:
reader = csv.reader(f)
m = 0
for row in reader:
n = 0
for field in row:
items.setText(n, field)
n = n + 1
return
m = m + 1

这只是我对可能的解决方案的直观解释的快速伪脚本。我不确定如何在向 QTreeWidget 添加行时合并行数 (m)。

有什么想法吗?

谢谢!

编辑:这是我正在做的事情的快速更新:

with open('Log.csv', 'rt') as f:
reader = csv.reader(f)
m = 0
for row in reader:
n = 0
for field in row:
self.treeWidgetLog.topLevelItem(m).setText(n, field)
n = n + 1
m = m + 1

但是,上面的代码给了我以下错误:

AttributeError: 'NoneType' object has no attribute 'setText'

我不确定为什么会发生这种情况,因为我之前见过使用过 topLevelItem().setText()...

最佳答案

您正在尝试在尚未创建的 topLevelItem 上设置文本。

如果您只想使用 csv 数据填充您的 treeWidget,那么使用构造函数 QTreeWidgetItem(parentWidget, list_of_string) 会更容易。 .

这样,当您创建该项目时,它会作为 topLevelItem 自动添加到 ParentWidget,并且您不再需要迭代 csv 行,因为您将它们直接传递给构造函数。

def populate(self):
with open('Log.csv', 'rt') as f:
reader = csv.reader(f)
for row in reader:
item = QtGui.QTreeWidgetItem(self.treeWidgetLog, row)

关于python - 从 CSV 文件填充 QTreeWidget - PySide/PyQt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com