PyQt4 中的多列(可能使用 QTreeWidget)

Posted

技术标签:

【中文标题】PyQt4 中的多列(可能使用 QTreeWidget)【英文标题】:Multiple Columns in PyQt4 (potentially using QTreeWidget) 【发布时间】:2012-08-16 03:01:08 【问题描述】:

我正在尝试让 QTreeWidget 的工作方式与此完全相同。在蟒蛇!我不关心多个选项卡,而是关心多个列。

这是我到目前为止所得到的。不过我不知道如何拥有多个标题。

self.pointListBox = QtGui.QTreeWidget()

x=QtGui.QTreeWidgetItem()
x.setText(0,str(coords[0]))
y=QtGui.QTreeWidgetItem()
y.setText(0,str(coords[1]))

Qname=QtGui.QTreeWidgetItem()
Qname.setText(0,new_point_name)

self.pointListBox.setHeaderItem(Qname)
parent = QtGui.QTreeWidgetItem(self.pointListBox)
parent.setText(0,new_point_name)
parent.addChild(x)
parent.addChild(y)

【问题讨论】:

【参考方案1】:

您需要解决一些问题。

from PyQt4 import QtCore, QtGui
import sys

app = QtGui.QApplication(sys.argv)
QtGui.qApp = app

pointListBox = QtGui.QTreeWidget()

header=QtGui.QTreeWidgetItem(["Tree","First","secondo"])
#...
pointListBox.setHeaderItem(header)   #Another alternative is setHeaderLabels(["Tree","First",...])

root = QtGui.QTreeWidgetItem(pointListBox, ["root"])
A = QtGui.QTreeWidgetItem(root, ["A"])
barA = QtGui.QTreeWidgetItem(A, ["bar", "i", "ii"])
bazA = QtGui.QTreeWidgetItem(A, ["baz", "a", "b"])


pointListBox.show()
sys.exit(app.exec_())

我没有完成这个例子,但这应该会让你相当接近。

注意,不是barA = QtGui.QTreeWidgetItem(A, ["bar", "i", "ii"]),没有错

barA = QtGui.QTreeWidgetItem(A)
barA.setText(0,"bar")
barA.setText(1,"i")
barA.setText(2,"ii")

如果您需要在显示文本之前进行计算。

【讨论】:

你知道如何指定列宽吗?谢谢。 我将我的示例修改为一个完整的 pyqt 程序,按原样运行。 是的。第一个和窗户一样宽。应该有办法修改它... 嗯...可以使用setColumnWidth 强制执行,但如果您显示的项目将自己标识为那么宽,则一定会发生一些奇怪的事情。

以上是关于PyQt4 中的多列(可能使用 QTreeWidget)的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt4 #2 中使用 PyQtGraph 进行实时绘图

PyQt4-如何制作一个按钮来删除组合框中的选定项目?

DataTables 中的单个下拉列表中的多列过滤

iOS 中的多列文本

QTableWidget 和 PyQt4 中的列宽

子集中所有可能的组合,多列