如何取消选中另一个 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()
就像我现在的代码一样,它有两个问题:
单选按钮和普通按钮不显示
假设单选按钮和普通按钮最终出现:我希望当我单击 Widget2
中的普通按钮时,Widget1
中的单选按钮应该是如果已经选中,则取消选中。
请注意,我已经通过在 Widget1
中添加第二个参数 bridge
来链接 Widget1
和 Widget2
。我这样做的原因是因为我原来的项目中还有一些其他功能。所以请尽量不要改动这部分。
按钮没有显示,因为您没有将网格布局添加到任何小部件。因此,对于 所有三个 网格布局,请执行以下任一操作:
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)
我想取消选中 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()
就像我现在的代码一样,它有两个问题:
单选按钮和普通按钮不显示
假设单选按钮和普通按钮最终出现:我希望当我单击
Widget2
中的普通按钮时,Widget1
中的单选按钮应该是如果已经选中,则取消选中。
请注意,我已经通过在 Widget1
中添加第二个参数 bridge
来链接 Widget1
和 Widget2
。我这样做的原因是因为我原来的项目中还有一些其他功能。所以请尽量不要改动这部分。
按钮没有显示,因为您没有将网格布局添加到任何小部件。因此,对于 所有三个 网格布局,请执行以下任一操作:
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)