2016-08-01 11 views
1

QCheckBox (deselect_checkbox)를 사용하면 다른 QCheckBox (first_checkbox)와 자체를 False으로 설정합니다. 그러나, 그것은 단지 격일마다 작동하고 나는 왜 확실하지 않다. 여기 코드는 다음과 같습니다QCheckBox는 두 번 검사 할 때만 실행됩니다.

def deselect_func(): 
    if self.dockwidget.deselect_checkbox.isChecked(): 
     self.dockwidget.first_checkbox.setChecked(False) 
     self.dockwidget.deselect_checkbox.setChecked(False) 

self.dockwidget.deselect_checkbox.stateChanged.connect(deselect_func) 

어떻게 내가 deselect_checkbox을 확인 매번 실행하는 기능을 얻을 수 있나요?


Qt Designer 4.8.5와 함께 QGIS 2.16.0 사용.

답변

1

"확인 상태"와 "확인 됨"이 혼합되어 있습니다.

전자는 세 가지 상태, 즉 Unchecked, PartiallyChecked 및 Checked를 가질 수 있지만 후자는 True/False입니다. setCheckState() 대신 setChecked()을 호출하면 상태 변경이 등록되지 않습니다. 따라서 다음 클릭에서 stateChanged 신호가 방출되지 않습니다 (변경 사항이 감지되지 않았으므로).

def deselect_func(): 
    if self.dockwidget.deselect_checkbox.isChecked(): 
     self.dockwidget.first_checkbox.setChecked(False) 
     self.dockwidget.deselect_checkbox.setChecked(False) 

self.dockwidget.deselect_checkbox.toggled.connect(deselect_func) 

또는 다음과 같이 :

는이 문제를 해결하려면 코드 그러므로 다음과 같이 있어야 하나

def deselect_func(): 
    if self.dockwidget.deselect_checkbox.checkState() == QtCore.Qt.Checked: 
     self.dockwidget.first_checkbox.setCheckState(QtCore.Qt.Unchecked) 
     self.dockwidget.deselect_checkbox.setCheckState(QtCore.Qt.Unchecked) 

self.dockwidget.deselect_checkbox.stateChanged.connect(deselect_func) 

을하지만이 검사로 deselect_checkbox이 있기 때문에, 표시되지 않습니다 의미 있습니다 항상 즉시 체크되지 않습니다. 그게 당신이 정말로 의도 한 것입니까?

+0

아, 고맙습니다. 그리고 네, 이것은 제가 의도 한 것입니다 :). 또한, 나는 당신이 _ "Checked, PartiallyChecked, and Unchecked"_을 의미한다고 생각하십니까? – Joseph