Как получить элемент, на который нажали, в QTreeWidget?

1

У меня двумерный QTreeWidget, как я могу получить элемент, щелкнув по нему? Я использую PyQt5. У меня есть эта часть кода, но он получает только первый элемент выбранной строки (или любой другой, изменяя baseNode.text(#))

...
self.treeWidget.itemSelectionChanged.connect(lambda: loadAllMessages())
def loadAllMessages():
    getSelected = self.treeWidget.selectedItems()
    if getSelected:
        baseNode = getSelected[0]
        getChildNode = baseNode.text(0)
        print(getChildNode) 
...
  • 0
    что такое двумерный QTreeWidget?
  • 0
    Это означает, что у предметов нет подпунктов.
Показать ещё 1 комментарий
Теги:
python-3.x
pyqt5
pyqt
qtreewidget

1 ответ

1
Лучший ответ

Вам просто нужно использовать сигнал itemClicked отправленный QTreeWidgetItem и QTreeWidgetItem столбца:

Пример:

from PyQt5 import QtCore, QtGui, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        lay = QtWidgets.QVBoxLayout(self)
        tree = QtWidgets.QTreeWidget()
        tree.setColumnCount(2)
        lay.addWidget(tree)

        for i in range(4):
            parent_it = QtWidgets.QTreeWidgetItem(["{}-{}".format(i, l) for l in range(2)])
            tree.addTopLevelItem(parent_it)
            for j in range(5):
                it = QtWidgets.QTreeWidgetItem(["{}-{}-{}".format(i, j, l) for l in range(2)])
                parent_it.addChild(it)
        tree.expandAll()

        tree.itemClicked.connect(self.onItemClicked)

    @QtCore.pyqtSlot(QtWidgets.QTreeWidgetItem, int)
    def onItemClicked(self, it, col):
        print(it, col, it.text(col))


if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
  • 0
    Вау, спасибо большое! Ты лучший.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню