如何取消从另一个类
问题描述:
所有单选按钮我想在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()
由于我的代码现在,它有两个问题:
的单选按钮,按钮不会显示
比方说,单选按钮,按钮终于露面:我想,当我点击
Widget2
按钮,在单选按钮如果它已被选中,则应该取消选中0。
请注意,我已经通过把第二个参数bridge
在Widget1
联Widget1
和Widget2
。我这样做的原因是因为我的原始项目中还有其他一些功能。所以请尽可能不要改变这部分。
答
的按钮显示不出来,因为你还没有添加网格布局到任何小部件。因此,对于所有三个网格布局,请执行此:
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)
如果我得到这个权利,所以我可以在第三类'C'链接两个班(让我们说'A'和'B')在一起,然后做A'和'B'之间'的行动'只要我设置了一个参数(比如'brid ge'在我的例子中)在两个类中的一个?更重要的是,我可以不设置“桥”吗? – ryan9025
@ ryan9025。该'C'类知道'A'和'B',但A''和'B'不知道对方的存在。如果你在'C'内连接'A'和'B'之间的所有信号,那么你不一定需要这个桥。这就是信号的美妙之处:组件不需要彼此了解;他们只是在信号到达时对信号作出反应。你有没有问另一个建议使用“桥”的问题?如果是这样,也许可以没有一个解决它。 – ekhumoro