如何取消从另一个类

问题描述:

所有单选按钮我想在class B按下一个按钮来取消选中class A一些单选按钮。如何取消从另一个类

我的示例代码如下:

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按钮,在单选按钮如果它已被选中,则应该取消选中0。

请注意,我已经通过把第二个参数bridgeWidget1Widget1Widget2。我这样做的原因是因为我的原始项目中还有其他一些功能。所以请尽可能不要改变这部分。

的按钮显示不出来,因为你还没有添加网格布局到任何小部件。因此,对于所有三个网格布局,请执行此:

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) 
+0

如果我得到这个权利,所以我可以在第三类'C'链接两个班(让我们说'A'和'B')在一起,然后做A'和'B'之间'的行动'只要我设置了一个参数(比如'brid ge'在我的例子中)在两个类中的一个?更重要的是,我可以不设置“桥”吗? – ryan9025

+0

@ ryan9025。该'C'类知道'A'和'B',但A''和'B'不知道对方的存在。如果你在'C'内连接'A'和'B'之间的所有信号,那么你不一定需要这个桥。这就是信号的美妙之处:组件不需要彼此了解;他们只是在信号到达时对信号作出反应。你有没有问另一个建议使用“桥”的问题?如果是这样,也许可以没有一个解决它。 – ekhumoro