Python Pyqt-如何因另一个组合框数据而更改组合框数据?

Python Pyqt-如何因另一个组合框数据而更改组合框数据?,python,combobox,pyqt,pyqt4,Python,Combobox,Pyqt,Pyqt4,我有一个表,有4列。 这4列中有两列是关于功能的。一个是特征,另一个是子特征。 在每列中,都有用于所有单元格的组合框。 我可以在这些单元格中打开txt。 我想:当我选择电影作为专题时,我只想在子功能组合框中看到电影的名称,而不想看到我“数据”中的每一个子功能。。。当我在功能中选择食物时,我只想在我的子功能组合框中看到食物的类型 。。我不知道怎么做。。。有办法吗 这里是我的def,用于将combobox放入表中并将文本文件打开到这些combobox中: def createEd(self, par

我有一个表,有4列。 这4列中有两列是关于功能的。一个是特征,另一个是子特征。 在每列中,都有用于所有单元格的组合框。 我可以在这些单元格中打开txt。 我想:当我选择电影作为专题时,我只想在子功能组合框中看到电影的名称,而不想看到我“数据”中的每一个子功能。。。当我在功能中选择食物时,我只想在我的子功能组合框中看到食物的类型

。。我不知道怎么做。。。有办法吗

这里是我的def,用于将combobox放入表中并将文本文件打开到这些combobox中:

def createEd(self, parent, option, index):
    if index.column() == POLARITY: 
        combobox = QComboBox(parent)
        combobox.addItems(sorted(index.model().TPolarities))
        combobox.setEditable(True)
        arquivo = codecs.open("ln2.txt",encoding='utf-8',mode="r")   
        conTWordsdo = arquivo.readlines()
        lista =[]        
        for i in conTWordsdo:
            lista.append(i.replace("\n",""))
        combobox.addItems(sorted(lista))
        return combobox            
    elif index.column() == FEATURE: 
        combobox = QComboBox(parent)
        combobox.addItems(sorted(index.model().TFeatures))
        combobox.setEditable(True)
        arquivo = codecs.open("ln1.txt",encoding='utf-8',mode="r")  
        conTWordsdo = arquivo.readlines()
        lista = []            
        for i in conTWordsdo:
            lista.append(i.replace("\n",""))
        combobox.addItems(sorted(lista))
        return combobox

    elif index.column() == SUBFEATURE: 
        combobox = QComboBox(parent)
        combobox.addItems(sorted(index.model().TSubFeatures))
        combobox.setEditable(True)
        arquivo = codecs.open("ln3.txt",encoding='utf-8',mode="r")  
        conTWordsdo = arquivo.readlines()
        lista = []            
        for i in conTWordsdo:
            lista.append(i.replace("\n",""))
        combobox.addItems(sorted(lista))
        return combobox             

    elif index.column() == SENTENCE:
        editor = QLineEdit(parent)
        self.connect(editor, SIGNAL("returnPressed()"), self.commitAndCloseEditor)
        return editor
    else:
        return QItemDelegate.createEditor(self, parent, option, index)
你将使用信号,类似这样:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtGui, QtCore

class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.items = dict(zip(
            [   "Parent {0}".format(x)
                for x in range(3)
                ],
            [   
                [ "Child {0} - {1}".format(x, y)
                    for y in range(3)
                    ]
                for x in range(3)
                ]
        ))

        self.comboBoxChild = QtGui.QComboBox(self)

        self.comboBoxParent = QtGui.QComboBox(self)
        self.comboBoxParent.addItems(self.items.keys())
        self.comboBoxParent.currentIndexChanged[str].connect(self.on_comboBoxParent_currentIndexChanged)
        self.comboBoxParent.setCurrentIndex(1)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.comboBoxParent)
        self.layoutVertical.addWidget(self.comboBoxChild)

    @QtCore.pyqtSlot(str)
    def on_comboBoxParent_currentIndexChanged(self, index):
        items = self.items[str(index)]

        self.comboBoxChild.clear()
        self.comboBoxChild.addItems(items)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()
    main.resize(222, 111)

    sys.exit(app.exec_())