【发布时间】:2018-07-31 02:17:03
【问题描述】:
当我使用item_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_())
如果上面的代码乱七八糟,请见谅。
【问题讨论】:
-
你可以使用"selection.setBackground(0, QtGui.QBrush(QtGui.QColor("#FFFF00")))"
-
@NimishBansal 如果我通过使用
item_selected('Item2')进行选择,那将不起作用,因为selection不再是QTreeViewItem。
标签: python python-3.x pyqt pyqt5 qtreeview