PyQt5 唯一点击的子项
Posted
技术标签:
【中文标题】PyQt5 唯一点击的子项【英文标题】:PyQt5 only child item clicked 【发布时间】:2014-02-14 11:58:56 【问题描述】:我的问题是: 我有一个带有项目(在窗口左侧)和右侧的 QTextEdit 的 QListWidget
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】:***项目没有父项,因此您可以这样做:
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")
【讨论】:
以上是关于PyQt5 唯一点击的子项的主要内容,如果未能解决你的问题,请参考以下文章