Python PyQT:如何按数据搜索小部件项

Python PyQT:如何按数据搜索小部件项,python,pyqt,Python,Pyqt,对于range3:iteration中的每个for i,将创建一个组合框项和QTreeWidget项。声明MyClass的实例变量,并将其分配给ComboBox和TreeWidget项的.setData,以便这些项指向相同的变量/对象 选择组合框或树的项将打印该项的数据对象ID号 问题是:如果项目名称已知,那么如何搜索组合框是非常清楚的 resultIndex = comboBox.findText('Items Name') 但是如何逐项搜索组合框的数据呢?所以目标是:我们选择树的项,我们读

对于range3:iteration中的每个for i,将创建一个组合框项和QTreeWidget项。声明MyClass的实例变量,并将其分配给ComboBox和TreeWidget项的.setData,以便这些项指向相同的变量/对象

选择组合框或树的项将打印该项的数据对象ID号

问题是:如果项目名称已知,那么如何搜索组合框是非常清楚的

resultIndex = comboBox.findText('Items Name')
但是如何逐项搜索组合框的数据呢?所以目标是:我们选择树的项,我们读取所选项的.data。知道Combobox的一个项具有相同的数据对象,我们在Combobox中搜索具有相应的.data对象的项:comboItem.data==treeItem.data

如何在不使用rangeself.comboBox.count:等中的for i的情况下执行此操作


为什么不使用相同的索引号,假设它们以相同的顺序保存相同的数据列表呢?好主意!但不幸的是,在现实世界中,项目顺序会有所不同。我们不能依赖它。
from PyQt4 import QtGui, QtCore
import sys, os

class MyClass(object):
    def __init__(self):
        super(MyClass, self).__init__()     

class myWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(myWindow, self).__init__(parent)
        myLayout = QtGui.QVBoxLayout(self)

        self.comboBox = QtGui.QComboBox()        
        self.tree = QtGui.QTreeWidget()
        myLayout.addWidget(self.comboBox)
        myLayout.addWidget(self.tree)

        for i in range(3):
            myObject=MyClass()
            self.comboBox.addItem('Item '+str(i), myObject)

            item=QtGui.QTreeWidgetItem()
            item.setText(0, 'Item '+str(i))
            item.setData(0, QtCore.Qt.UserRole, myObject)
            self.tree.addTopLevelItem(item)

        self.comboBox.activated.connect(self.comboActivated)
        self.tree.clicked.connect(self.treeItemClicked)

    def comboActivated(self, itemNumber=None):
        itemData=self.comboBox.itemData(itemNumber).toPyObject()
        print 'Comobox Data Object ID =', id(itemData)

    def treeItemClicked(self, itemIndex=None):
        item=self.tree.itemFromIndex(itemIndex)
        itemData=item.data(0, QtCore.Qt.UserRole).toPyObject()
        print 'TreeWid Data Object ID =', id(itemData)

        # HOW TO SEARCH COMBOBOX ITEMS TO FIND A CORRESPONDING DATA OBJECT?

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('myApp')
    dialog = myWindow()
    dialog.show()
    sys.exit(app.exec_())