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

时间:2017-10-04 14:16:06

标签: python layout pyqt4 signals-slots

我想通过按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中的单选按钮应该是如果已经检查,则取消选中。

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

1 个答案:

答案 0 :(得分:0)

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

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

或者这个:

    self.grid = QGridLayout(self)

要使用单击按钮选中/取消选中单选按钮,请执行以下操作:

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