我想通过按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
中添加第二个参数Widget2
来链接bridge
和Widget1
。我这样做的原因是因为我的原始项目中还有其他一些功能。所以请尽可能不改变这一部分。
答案 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)