TreeWidget mit pyQT zur Laufzeit füllen

OP #3901523
Lesenswert?
• ▲
▼
Hallo zusammen!

Folgende Situation:
ich habe mit dem Qt Designer eine Oberfläche mit einem TreeWidget 
erstellt. Diese kann ich wie folgt aufrufen:
1
import sys
2
from PyQt4 import QtCore, QtGui, uic
3

4
form_class = uic.loadUiType("MainWindow.ui")[0]  
5

6
class MainWindow(QtGui.QMainWindow, form_class):
7
    def __init__(self, parent=None):
8
        QtGui.QMainWindow.__init__(self, parent)
9
        self.setupUi(self)
10

11
app = QtGui.QApplication(sys.argv)
12
myWindow = MainWindow(None)
13
myWindow.show()
14
app.exec_()

Desweiteren habe ich ein Beispiel für das Füllen des Widget zur 
Laufzeit:
1
from PyQt4 import QtCore, QtGui
2
import sys
3

4
app = QtGui.QApplication(sys.argv)
5
QtGui.qApp = app
6

7
pointListBox = QtGui.QTreeWidget()
8

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

13
root = QtGui.QTreeWidgetItem(pointListBox, ["root"])
14
A = QtGui.QTreeWidgetItem(root, ["A"])
15
barA = QtGui.QTreeWidgetItem(A)
16
barA.setText(0,"bar")
17
barA.setText(1,"i")
18
barA.setText(2,"ii")
19
bazA = QtGui.QTreeWidgetItem(A, ["baz", "a", "b"])
20

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

Das Problem: wie verbinde ich diese beiden Codeschnippsel? Ich möchte 
die Oberfläche mit dem Qt Designer erstellen und mir eine Funktion 
schreiben, die das Ganze zur Laufzeit (also zum Beispiel Button-Klick) 
füllt. Meine Versuche endeten immer damit, dass irgendwelche globalen 
Variablen nicht bekannt waren.

Der Part mit den Buttons ist erstmal unwichtig. Mir geht es um das 
richtige Ansprechen des TreeWidget.

Vielen Dank.

Gruß
Dennis
Angehängte Dateien:
OP #3901592
Lesenswert?
• ▲
▼
Okay, hier mal ein kleines Beispiel:
1
import sys
2
from PyQt4 import QtCore, QtGui, uic
3

4
form_class = uic.loadUiType("MainWindow.ui")[0]  
5

6
def fillTreeWidget():
7
    root = MainWindow.treeEntries(pointListBox, ["root"])
8
    A = QtGui.QTreeWidgetItem(root, ["A"])
9
    barA = QtGui.QTreeWidgetItem(A)
10
    barA.setText(0,"bar")
11
    barA.setText(1,"i")
12
    barA.setText(2,"ii")
13
    bazA = QtGui.QTreeWidgetItem(A, ["baz", "a", "b"])
14

15
class MainWindow(QtGui.QMainWindow, form_class):
16
    def __init__(self, parent=None):
17
        QtGui.QMainWindow.__init__(self, parent)
18
        self.setupUi(self)
19

20
if __name__ == "__main__":
21
    app = QtGui.QApplication(sys.argv)
22
    myWindow = MainWindow(None)
23
    myWindow.show()
24

25
    fillTreeWidget()
26

27
    app.exec_()

Die Fehlermeldung ist:
AttributeError: type object 'MainWindow' has no attribute 'treeEntries'

Gruß
Dennis
OP #3902842
Lesenswert?
• ▲
▼
Stimmt natürlich! FacePalm

Aber auch folgendes bricht mit der Meldung "AttributeError: type object 
'MainWindow' has no attribute 'treeEntries'" ab. Wie kann ich auf die 
Widgets zugreifen?
1
import sys
2
from PyQt4 import QtCore, QtGui, uic
3

4
form_class = uic.loadUiType("MainWindow.ui")[0]  
5

6
def fillTreeWidget():
7
    header=QtGui.QTreeWidgetItem(["Tree","First","secondo"])
8
    MainWindow.treeEntries.setHeaderItem(header)
9

10
class MainWindow(QtGui.QMainWindow, form_class):
11
    def __init__(self, parent=None):
12
        QtGui.QMainWindow.__init__(self, parent)
13
        self.setupUi(self)
14

15
if __name__ == "__main__":
16
    app = QtGui.QApplication(sys.argv)
17
    myWindow = MainWindow(None)
18
    myWindow.show()
19

20
    fillTreeWidget()
21

22
    app.exec_()

Danke und Gruß,
Dennis

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren