2013-06-12 2 views
1

콤보 상자의 콤보 박스/상태에서 선택한 현재 옵션을 기반으로 line_edit 항목을 활성화/비활성화합니다.pyqt - 콤보 상자 항목 상태에 따라 line_edit 항목 활성화/비활성화

이것은 내가 지금까지 들어 왔 가장 가까운

self.combobox_widget.activated.connect(self.line_edit_widget.setDisabled) 

그러나, 콤보 상자에서 첫 번째 옵션은 line_edit 사용하도록 설정해야 하나이며, 그것은 또한 line_edit을 비활성화하는 경우에만 이렇게 모든 다른 옵션에 대해.

나는 여러 옵션을 사용하여 line_edit을 비활성화하고 line_edit를 활성화하는 여러 옵션을 가질 수 있도록하고 싶습니다.

나는 클래스 정보와 메소드 정보를 http://pyqt.sourceforge.net/Docs/PyQt4/classes.html 에서 찾고 있었지만 다른 어떤 것도 얻을 수 없었습니다.

저는 기본 아이디어가 콤보 박스에 연결하고, 상태를 변경하여 생성 된 신호를 수신 한 다음 전송 된 신호와 관련된 값에 따라 line_edit를 사용 또는 사용 불가능으로 설정한다는 것을 알고 있습니다.

도움이 될 것입니다.

답변

2

다른 기능을 만들고 콤보 상자에 연결하십시오. activated을 사용하지 마십시오. index이 변경되지 않으면 아무 것도 할 필요가 없으므로 currentIndexChanged을 사용하십시오.

def comboBoxIndexChanged(index): 
    #Do something based on the index 
    if somethingBasedOnTheIndex: 
    self.line_edit_widget.setEnabled(true) 
    else: 
    self.line_edit_widget.setEnabled(false) 

당신이 activated 신호가 함수에 QComboBox 인덱스를 보내는 때문입니다있는대로 행동하는 것 이유. 그런 다음 true 또는 false으로 전송 중입니다. 그런 다음 파이썬은 0false (을 사용 가능하게 함)으로 캐스팅하고, 다른 모든 인덱스는 true이됩니다.

+0

감사합니다. 나는 색인이 bool에 캐스팅되었다고 생각하지 않았습니다! 제안 된 변경 작업을 지금 진행하십시오. –