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