如何取消选中另一个 class 的所有单选按钮

How to uncheck all radio buttons from another class

我想取消选中 class A 中的某些单选按钮,方法是按下 class B 中的按钮。

我的示例代码如下:

import sys, os

import PyQt4
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Widget1(QWidget):
    def __init__(self, bridge, parent=None):
        super().__init__()

        self.bridge = bridge

        self.grid = QGridLayout()

        self.radiobtn = QRadioButton()
        self.grid.addWidget(self.radiobtn, 0, 0)

class Widget2(QWidget):

    def __init__(self, parent = None):
        super().__init__()

        self.grid = QGridLayout()

        self.pushbtn = QPushButton()
        self.grid.addWidget(self.pushbtn,0, 0)

class Tab1Layout(QWidget):
    def __init__(self, parent = None):
        super().__init__()
        self.grid = QGridLayout()

        self.group2 = Widget2()

        self.group1 = Widget1(self.group2, self)

        self.grid.addWidget(self.group1, 0, 0)
        self.grid.addWidget(self.group2, 1, 0)


class Tabs(QTabWidget):
    def __init__(self, parent = None):
        super().__init__()
        self.tab1 = Tab1Layout()
        self.addTab(self.tab1, 'Tab1')

        self.show()

def main():
    app = QApplication(sys.argv)
    main = Tabs()
    main.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

就像我现在的代码一样,它有两个问题:

  1. 单选按钮和普通按钮不显示

  2. 假设单选按钮和普通按钮最终出现:我希望当我单击 Widget2 中的普通按钮时,Widget1 中的单选按钮应该是如果已经选中,则取消选中。

请注意,我已经通过在 Widget1 中添加第二个参数 bridge 来链接 Widget1Widget2。我这样做的原因是因为我原来的项目中还有一些其他功能。所以请尽量不要改动这部分。

按钮没有显示,因为您没有将网格布局添加到任何小部件。因此,对于 所有三个 网格布局,请执行以下任一操作:

    self.grid = QGridLayout()
    self.setLayout(self.grid)

或者这个:

    self.grid = QGridLayout(self)

要 check/uncheck 使用按钮单击的单选按钮,请执行以下操作:

class Tab1Layout(QWidget):
    def __init__(self, parent = None):
        ...
        self.group2.pushbtn.clicked.connect(self.group1.radiobtn.toggle)