Несколько столбцов в PyQt4 (возможно, с использованием QTreeWidget)

Я пытаюсь заставить 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")

если вам нужно что-то посчитать перед отображением текста.

Другие вопросы по тегам