Ich habe zwei QTreeWidget in einem Formular, eines ohne Kinder, das andere mit Kindern, wie im Screenshot unten dargestellt. Ich möchte, dass der rechte Baum erweitert wird, wenn er ausgeblendet (und ausgeblendet wird, wenn er erweitert wird), jedes Mal, wenn ein Element in der linken Baumstruktur ausgewählt wird.Python - Synchronisieren von zwei QTreeWidgets
Ich habe versucht, dies unten mit dem Code zu erreichen, wo ich einen Griff Funktion zum ItemSelectionChanged Ereignisse der linken Liste zu verbinden. Das Problem besteht darin, dass die Methoden .collapse() und .expand() einen QIndexModel-Parameter (von QTreeView geerbt) erfordern, aber QTreeWidget ein vordefiniertes Modell verwendet, auf das ich nicht zugreifen kann.
Kann jemand da draußen mir die Hand geben?
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.tree1 = QtGui.QTreeWidget(self)
self.tree2 = QtGui.QTreeWidget(self)
layout = QtGui.QHBoxLayout(self)
self.tree1.header().hide()
self.tree2.header().hide()
self.tree1.itemSelectionChanged.connect(self.handleSelected)
for text in 'A B C D'.split():
item = QtGui.QTreeWidgetItem(self.tree1, [text])
for text in '1 2 3 4'.split():
item = QtGui.QTreeWidgetItem(self.tree2, [text])
for text in 'red blue green'.split():
child = QtGui.QTreeWidgetItem(item, [text])
layout.addWidget(self.tree1)
layout.addWidget(self.tree2)
def handleSelected(self):
if self.tree2.isExpanded():
self.tree2.collapse()
else:
self.tree2.expand()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Danke @ Ekhumoro, es funktioniert jetzt gut! Prost. – maurobio