Python 如何以编程方式突出显示QTreeView中的选择?
当我使用Python 如何以编程方式突出显示QTreeView中的选择?,python,python-3.x,pyqt,pyqt5,qtreeview,Python,Python 3.x,Pyqt,Pyqt5,Qtreeview,当我使用item\u selected('Item2')以编程方式在QTreeView中选择一个选项时,该选项会按预期传递给处理程序。我也希望该项目有一个选择突出显示,但我似乎无法弄清楚。有什么想法吗 from PyQt5.Qt import Qt from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem import sys def item_selected(selection): try:
item\u selected('Item2')
以编程方式在QTreeView
中选择一个选项时,该选项会按预期传递给处理程序。我也希望该项目有一个选择突出显示,但我似乎无法弄清楚。有什么想法吗
from PyQt5.Qt import Qt
from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
import sys
def item_selected(selection):
try:
print(selection.text(0))
except AttributeError:
print(selection)
app = QApplication(sys.argv)
TreeList = ({
'Header1': (('Item1', 'Item2', )),
'Header2': (('Item11', 'Item21', )),
})
tree = QTreeWidget()
for key, value in TreeList.items():
parent = QTreeWidgetItem(tree, [key])
for val in value:
child = QTreeWidgetItem([val])
child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
child.setCheckState(0, Qt.Unchecked)
parent.addChild(child)
tree.itemClicked.connect(item_selected)
tree.show()
# SELECT AND HIGHLIGHT THIS ONE
item_selected('Item2')
sys.exit(app.exec_())
很抱歉,如果上面的代码乱七八糟。您不能使用相同的插槽,因为它接收一个项目,并且只打印它,在您的情况下,您必须搜索该项目的文本并选择它:
def item_selected(selection):
print(selection.text(0))
app = QApplication(sys.argv)
TreeList = ({
'Header1': (('Item1', 'Item2', )),
'Header2': (('Item11', 'Item21', )),
})
tree = QTreeWidget()
for key, value in TreeList.items():
parent = QTreeWidgetItem(tree, [key])
for val in value:
child = QTreeWidgetItem([val])
child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
child.setCheckState(0, Qt.Unchecked)
parent.addChild(child)
tree.itemClicked.connect(item_selected)
items = tree.findItems("Item2", Qt.MatchFixedString| Qt.MatchRecursive)
[it.setSelected(True) for it in items]
tree.expandAll()
tree.show()
sys.exit(app.exec_())
你可以使用“selection.setBackground(0,QtGui.QBrush(QtGui.QColor(#FFFF00”))”@NimishBansal,如果我在使用
item\u selected('Item2')中通过选择,则该选项无效。
因为selection
不再是QTreeViewItem
。我使用了它的一个变体,但这个答案让我走上了正确的道路。答案完全符合预期。