【发布时间】:2020-04-24 18:56:43
【问题描述】:
QButtonGroups 可以有复选框。但是您不能将它们添加到 QButtonGroup,因为它们不继承 QAbstractButton。
如果某些 UI 能够拥有一些带有专用复选框的 QGroupBox,那就太好了。也就是说,您选中一个,其他 QGroupBox 将自动取消选中。
在理想的世界里,我可以这样做:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QGroupBox, QWidget, QApplication,
QAbstractButton, QButtonGroup)
class SuperGroup(QGroupBox, QAbstractButton):
def __init__(self, title, parent=None):
super(SuperGroup, self).__init__(title, parent)
self.setCheckable(True)
self.setChecked(False)
class Example(QWidget):
def __init__(self):
super().__init__()
sg1 = SuperGroup(title = 'Super Group 1', parent = self)
sg1.resize(200,200)
sg1.move(20,20)
sg2 = SuperGroup(title = 'Super Group 2', parent = self)
sg2.resize(200,200)
sg2.move(300,20)
self.bgrp = QButtonGroup()
self.bgrp.addButton(sg1)
self.bgrp.addButton(sg2)
self.setGeometry(300, 300, 650, 500)
self.setWindowTitle('SuperGroups!')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
一旦您尝试将 SuperGroup 添加到按钮组,此代码就会失败。 PyQt5 明确不支持多重继承。但是有一些examples out in the wild, like from this blog。
在这个简单的示例中,以编程方式管理点击会很容易。但是,当您添加更多组框时,它会变得更加混乱。或者如果你想要一个带有按钮、复选框和分组框的 QButtonGroup 怎么办?啊。
【问题讨论】:
标签: python pyqt pyqt5 qbuttongroup