单击PyQt5仅子项

时间:2014-02-14 11:58:57

标签: python-3.x pyqt5

我的问题是: 我有一个带有项目的QListWidget(在窗口的左侧)和右侧的QTextEdit

items               textEdit 
-item1
---subitem1
---subitem2
-item2
---subitem1
---subitem2

我像这样填写listWidget:

for name in names:
        item = QtWidgets.QTreeWidgetItem([name])
        self.treeWidget.addTopLevelItem(item)
        for cmd in description:
            item2 = QtWidgets.QTreeWidgetItem([cmd])
            item.addChild(item2)

然后我希望如果我在子项目上点击一些文本出现在textEdit中 只有子项才能显示文字。 我写了

self.treeWidget.itemClicked.connect(self.item2Clicked)
....
def item2Clicked(self, item, column):
    self.textEdit.insertPlainText("hello")

但这不对,因为如果我点击item1 - 文字也会出现。 感谢您的帮助,对不起我的英语:)

1 个答案:

答案 0 :(得分:0)

顶级项目没有父级,因此您可以这样做:

    def item2Clicked(self, item, column):
        if item.parent() is not None:
            self.textEdit.insertPlainText("hello")

更一般地说,您可以为构造函数中的每个项目设置type

    item = QtWidgets.QTreeWidgetItem([name], 1)
    self.treeWidget.addTopLevelItem(item)
    for cmd in description:
        item2 = QtWidgets.QTreeWidgetItem([cmd], 2)

然后执行:

    def item2Clicked(self, item, column):
        if item.type() == 2:
            self.textEdit.insertPlainText("hello")