2013-04-18 6 views
0

저는 PyQt 디자이너를 사용하고 pyuic4를 사용하여 변환합니다. 당신이, 내가 내 콤보 상자에 넣어 텍스트 코드의이 부분에 표시 나던 볼 수PyQt comboBox에서 현재 값을 얻는 방법

self.comboBox = QtGui.QComboBox(self.groupBox_3) 
    self.comboBox.setGeometry(QtCore.QRect(20, 30, 81, 22)) 
    self.comboBox.setObjectName(_fromUtf8("comboBox")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 
    self.comboBox.addItem(_fromUtf8("")) 

때문에, 그러나 그것은 표시 않습니다
내 UI 파일은 다음과 같다이 콤보 상자가 gui. 내가 어떤 사용자 선택이있을 때

보통, 라디오 버튼처럼, 나는이 검사를 수행 할 수 있습니다

if self.RAnkle.isChecked(): 

내가 입력 텍스트와 비슷한 일을 할 수있다. self.comboBox.getText()를 말하고 사용자가 선택한 문자열을 반환하려는 것처럼 comboBox로이 논리를 수행하려고합니다. 이 http://pyqt.sourceforge.net/Docs/PyQt4/qcombobox.html에 대한 몇 가지 항목을 시도했지만 작동하지 못할 수 있습니다. 예를 들어

,이 코드 :

self.comboBox.activated() 

반환이 오류 메시지 :

TypeError: native Qt signal is not callable 

가 나는 또한 정보 ItemData를 (사용하는 것을 시도했다)하지만 난 여전히 오류가 나타납니다

TypeError: QComboBox.itemData(int, int role=Qt.UserRole): not enough arguments 

콜백 내부에서이 작업을 수행하므로 먼저 다음을 수행하십시오.

self.analyzeButton.clicked.connect(self._AnalyzeData) 

_AnalyzeData 함수 내에서 현재 콤보 상자 항목의 텍스트를 가져 오려고합니다.

이렇게 할 수 있습니까?

감사합니다.

+0

)하지만 누군가가 설명 할 수 있다면 좋을 텐데 오류에 대한 추론. – user1938107

답변

2

글쎄, 당신의 오류에 대해, 꽤 자명하지 않습니까? :-)

문서에서 당신은 단지 연결하십시오 Qt는로

void activated (int)

This is the default overload of this signal.This signal is sent when the user chooses an item in the combobox. The item's index is passed. Note that this signal is sent even when the choice is not changed. If you need to know when the choice actually changes, use signal currentIndexChanged().

는 직접 호출 할 수 없습니다 신호 :이 방출 될 수 있으며,이 발생했을 때 호출 될 슬롯을 만들 수 있습니다.

QVariant QComboBox.itemData (self, int index, int role = Qt.UserRole)

Returns the data for the given role in the given index in the combobox, or QVariant.Invalid if there is no data for this role.

See also setItemData().

role 매개 변수는 기본값을 가지므로 생략 할 수 있지만 인덱스를 지정해야합니다.

어쨌든 해결책을 찾았 기쁘다!

+0

그래, 내가 해결책을 찾았지만, 실제로 내가하려고했던 것이 아니었고, 나는 그저 하하를 깨달았다. 내가 값으로 콤보 박스를 가지고 있다면, 특정 값이 단지 그 이름을 사용하여 선택되었는지 어떻게 질의를 할 수 있는지, 또는 이름의 색인을 알아야하는지 어떻게 말 할까? – user1938107

0

당신은 당신이 람다를 사용한다 통과 인수 connect functionSLOT를 호출 할 경우 그래서 질문에 대한 대답은 .currentText (이다

QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), 
           lambda: self.materialsInstance.setFilterDict_Insert("L",self,"name",self.lineEdit.text())) 
관련 문제