Python Hierarchical QcomboBox:清理列表

时间:2010-01-02 06:29:44

标签: python qt combobox hierarchical-data

我有一个分层的两个组合框。第一个组合框显示customerNames列表,即MySQL数据库中的不同公司。每个客户都在不同的城市设有分支机构。

然后,当从combo-box1选项列表中选择客户名称时,例如{Aldi,Meyer,Carrefour,WalMart},对于该特定客户,城市/分支列表将自动显示在组合框2中。这样的东西,例如:

combo1: chosen_customer [Aldi] --> cities:{NY, Boston, Berlin, Tokyo, London} then..
combo2: options {NY, Boston, Berlin, Tokyo, London}

当我们再次选择另一个客户时,问题就出现了,最终客户的分支数量较少 - 例如

combo1: chosen_customer [Meyer] --> {LA, San Francisco}, then.. we got
combo2: options {LA, San Francisco, Berlin, Tokyo, London}

intead of combo2: options {LA, San Francisco}

这是运行combo2的函数,每次从列表combo1中选择customerName时都会调用它:

def loadComboCity(self,customerName):
    """query results cityList into self.mydb.matrix"""
    queryName="citylist_thisCustomer"
    self.mysqlAPI(queryName,customerName)

    id=0
    for row in self.mydb.matrix:
        cityname=self.mydb.matrix[id][0]
        self.addcomboCity(id,cityname) 
        id=id+1
    del self.mydb.matrix[:]

以及添加属于该客户的列表城市的每个名称的函数:

def addcomboCity(self,id,cityname):
    self.comboCity.addItem(QtCore.QString())
    self.comboCity.setItemText(id, QtGui.QApplication.translate("MainWindow", cityname, None, QtGui.QApplication.UnicodeUTF8))

我们尝试使用del来清理列表的先前内容,但它仍然会得到相同的行为。

这是Qt还是Python相关的问题?或者有一点我们在这里失踪了?

我们非常感谢所有意见和建议。

1 个答案:

答案 0 :(得分:1)

我认为你在'for循环'之前缺少一个QComboBox.clear()调用。请尝试以下代码(注意id = 0之前的新行)

def loadComboCity(self,customerName):
    """query results cityList into self.mydb.matrix"""
    queryName="citylist_thisCustomer"
    self.mysqlAPI(queryName,customerName)

    # Clear the previous items in the combobox (if any)
    self.comboCity.clear()

    id=0
    for row in self.mydb.matrix:
        cityname=self.mydb.matrix[id][0]
        self.addcomboCity(id,cityname) 
        id=id+1
    del self.mydb.matrix[:]