2012-08-16 88 views
4

我試圖讓QTreeWidget的工作方式與此類似。在python中!我不關心多個標籤,而是關於多個列。PyQt4中的多列(可能使用QTreeWidget)

image

這是我這麼遠。我不知道如何擁有多個標題。

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) 

回答

19

有幾件事你要在那裏修復。

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") 

如果需要顯示文本之前計算的東西。

+0

非常感謝。它效果很好。 – Kiarash 2012-08-16 21:07:21

+0

你知道我如何指定列寬嗎?謝謝。 – Kiarash 2012-08-16 21:18:14

+0

我修改了我的示例,使其成爲完整的pyqt程序,可以按原樣運行。 – jkerian 2012-08-16 21:18:29