2012-08-16 8 views
4

QTreeWidget이이 작업과 정확히 동일하게 작동하려고합니다. 파이썬에서! 여러 탭에 대해서는 신경 쓰지 않지만 여러 열에 대해서는 신경 쓰지 않습니다.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

+0

열 너비를 어떻게 지정할 수 있는지 알고 계십니까? 감사. – Kiarash

+0

샘플을 수정하여있는 그대로 실행되는 완전한 pyqt 프로그램이되도록했습니다. – jkerian