我已经将一个QTreeWidget项和信号CurrentItemChanged连接到一个基于DB查找来更新图形用户界面的方法。
CurrentItemChanged文档说它将把QTreeWidgetItems作为参数传递给该方法。首先是当前项目,然后是先前选择的项目。
我看到传递的是一个后面跟着一个整数的QTreeWidgetItem,可能是当前所选项目的列。这种行为似乎不是任何人的Pyqt5文档的一部分。
在我自己存储对前一项的引用之前,我是否遗漏了什么?代码非常简单:
self.TreeWidget.currentItemChanged.connect(self.update) # signal connect
def update(self, old, new):
# do stuff with old and new, both as as QTreeWidgetItems
发布于 2018-07-17 05:02:45
此信号在当前项目更改时发出。当前项由current指定,这将替换以前的当前项。
试试看:
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
class Window(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.vlayout = QtWidgets.QVBoxLayout()
# tree widget item
tree_widget_item = QtWidgets.QTreeWidgetItem(['Item 1'])
tree_widget_item.addChild(QtWidgets.QTreeWidgetItem(['Sub item 1']))
tree_widget_item.addChild(QtWidgets.QTreeWidgetItem(['Sub item 2']))
# tree widget
tree_widget = QtWidgets.QTreeWidget(self)
tree_widget.addTopLevelItem(tree_widget_item)
self.vlayout.addWidget(tree_widget)
tree_widget.currentItemChanged.connect(self.current_item_changed)
@QtCore.pyqtSlot(QtWidgets.QTreeWidgetItem, QtWidgets.QTreeWidgetItem)
def current_item_changed(self, current, previous):
print('\ncurrent: {}, \nprevious: {}'.format(current, previous))
application = QtWidgets.QApplication(sys.argv)
window = Window()
window.setWindowTitle('Tree widget')
window.resize(250, 180)
window.show()
sys.exit(application.exec_())
https://stackoverflow.com/questions/51369081
复制相似问题