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 选项d型组和单选按钮 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ý
..................................................................................................................