python - 如何获取 QTreeWidget 中被单击的项目?

标签 python python-3.x pyqt pyqt5 qtreewidget

我有一个二维的QTreeWidget,如何通过点击它来获取一个Item?我使用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) 
...

最佳答案

您只需使用 itemClicked 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_())

关于python - 如何获取 QTreeWidget 中被单击的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546461/

相关文章:

python - 获取首次发表的年份 Google Scholar

python-3.x - 在 Windows 中安装 Python 3.8 和 dbt 后无法获取 ~/.dbt/folder 或 profiles.yml 文件

python - 从另一个 python(2.7) 文件打开 Qt4 python 文件时遇到问题

pyQt:在 QListWidget 中选中的查询复选框

python - 如何在pandas中合并3个数据集

python - 如何以编程方式确定 linux 中的默认应用程序

python - 在 message.content.find 上 Disord.py 双输出

Python、MySQLConnector、MySQLCursor.fetchall() 抛出 'No result set' 错误,尽管查询返回行

python - 将属性注入(inject) QML 组件

python - 在 python 中添加/删除字符?