SetChecked 라디오 다른 그룹의 pyqt

0

질문

저는 2 라디오 버튼을 만들(내부 QMainWindow 클래스)다음과 같:

    def dtype_radiobuttons(self):
        layout = QHBoxLayout()
        rb1 = QRadioButton("complex")
        rb1.toggled.connect(lambda: self.update_image("dtype", rb1.text()))


        self.real_dtype_rb = QRadioButton("real", self)
        self.real_dtype_rb.toggled.connect(lambda: self.update_image("dtype", self.real_dtype_rb.text()))

        self.btngroup.append(QButtonGroup())
        self.btngroup[-1].addButton(self.real_dtype_rb)
        self.btngroup[-1].addButton(rb1)

        rb1.setChecked(True)
        layout.addWidget(rb1)
        layout.addWidget(self.real_dtype_rb)
        layout.addStretch()

        return layout

    def library_radiobutton(self):
        layout = QHBoxLayout()
        self.cvnn_library_rb = QRadioButton("cvnn", self)
        self.cvnn_library_rb.toggled.connect(lambda: self.update_image("library", self.cvnn_library_rb.text()))

        rb2 = QRadioButton("tensorflow", self)
        rb2.toggled.connect(lambda: self.update_image("library", rb2.text()))

        self.btngroup.append(QButtonGroup())
        self.btngroup[-1].addButton(rb2)
        self.btngroup[-1].addButton(self.cvnn_library_rb)

        self.cvnn_library_rb.setChecked(True)
        layout.addWidget(self.cvnn_library_rb)
        layout.addWidget(rb2)
        layout.addStretch()

        return layout

나는 그것을 만들고 싶은 불가능 하는 선택 complex 옵션의 dtype 라디오 버튼 그룹과 tensorflow 라디오 버튼 라이브러리의 라디오 버튼. 을 떠나 3 의 4 가능합니다. 그렇다면 내가 선택 complex 와 라이브러리 tensorflow하고 싶 자동으로 변경 라이브러리 cvnn. 나는 그것을 구현하는 다음과 같다:

    def update_image(self, key, value):
        if value == "complex":
            if hasattr(self, 'cvnn_library_rb'):    # It wont exists if I still didnt create the radiobutton.
                self.cvnn_library_rb.setChecked(True)   # Set library cvnn
        elif value == "tensorflow":
            if hasattr(self, 'real_dtype_rb'):
                self.real_dtype_rb.setChecked(True)   # Set real dtype
        ... Do the other stuff I need to do.

이상한 것은 그것이 실제로 작동하는 의미에서,예를 들어,만약 나에 complex 활성화되고 선택 tensorflow가,변경 라디오 버튼 real (나는 무엇을 원하는!) 지 tensorflow 지 않을 얻을 선택! 나는 그것을 선택하시는 경우 self.real_dtype_rb.setChecked(True) 취소 선택의 라디오 버튼을 클릭한다. (아주 이상한 내게 묻는다면).


  • hasattr 이기 때문에 사용 순서에 따라 나는 전화 기능,일부 라디오 버튼 만들기 다른다,그래서 그것은 없을 수도 있습니다.

  • 옵션이 나가려 하지만 그것은 비활성화하는 라디오 버튼 그룹을 변경하는 대신 그들의 상태(지아보세요).

pyqt python qt
2021-11-23 08:48:26
1

최고의 응답

1

신호 toggled 가 트리거 될 때마다 당신의 상태를 변경하는 라디오 버튼이 있습니다. 그래서,트리거 될 때 당신은 전화 setChecked (한번에 라디오 버튼을 전환하면 다른 당신은 untoggle)및 update_image 라고가 잘못된 경우입니다.

당신 상태를 확인하는 라디오 버튼을 update_image 는 경우에만 라디오 버튼로 전환 됩니다:

rb2.toggled.connect(lambda state: state and self.update_image("library", rb2.text(), state))
2021-11-23 10:45:03

일했다! 감사합니다!
Agustin Barrachina

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................