2010-01-02 2 views
0

나는 두 개의 콤보 상자를 가지고 있습니다. 첫 번째 콤보 상자에는 customerNames의 목록, 즉 MySQL 데이터베이스의 다른 회사가 표시됩니다. 각 고객마다 다른 도시에 지점이 있습니다.Python 계층 적 QcomboBox : 정리 목록

그런 다음 콤보 상자 1 옵션 목록에서 고객 이름을 선택한 경우. {Aldi, Meyer, Carrefour, WalMart} 특정 고객의 경우 도시/지점 목록이 자동으로 콤보 상자 2에 표시됩니다. 우리는 다시 결국 가지의 작은 번호가 다른 고객을 선택 때처럼 뭔가, 예컨대는 :

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

문제는 온다 - 예를 들어, 속한 목록 도시의 각 이름을 추가

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[:] 

및 기능 : 여기

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} 

는 CUSTOMERNAME이 목록 combo1에서 선택 될 때마다 호출되는 combo2를 실행하는 기능입니다 그 고객에게 :

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 또는 파이썬 관련 문제입니까? 아니면 여기에 우리가 누락 된 부분이 있습니까?

모든 의견 및 제안은 높이 평가됩니다.

답변

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[:] 
+0

감사합니다. 'clear()'가 문제를 해결했습니다 ........ | : 0), – ThreaderSlash