可以取消选择组框中的单个单选按钮

时间:2019-01-22 15:30:07

标签: python python-2.7 pyqt pyqt4

我尝试搜索相应的主题,但是找不到,所以我在这里。 我已经在Python和PyQt4中创建了一个应用程序,可以从文件中导入一些数据。在导入期间,我动态创建了一些组框和单选按钮,以供用户显示所需的数据。由于收集到的数据,一个分组框可能只有一个单选按钮。

问题是,当用户单击此已选择的单选按钮时,该按钮被取消了选择(中间没有黑点)。再次单击它,再次选择它...

是一个错误还是应该设置一个属性,以使这种行为不会发生(意味着该按钮永远不会被取消选择,因为它仅在组框中)?

如何防止这种行为?

示例(已添加)

import sys
from PyQt4 import QtCore, QtGui

class MyApp(QtGui.QMainWindow):
    def __init__(self):
        super(MyApp, self).__init__()
        self.resize(289, 171)
        self.centralwidget = QtGui.QWidget(self)
        self.setCentralWidget(self.centralwidget)
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.groupBox = QtGui.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(0, 0, 100, 100))
        self.groupBox.setTitle("GroupBox")
        self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)
        self.radioButton = QtGui.QRadioButton(self.groupBox)
        self.radioButton.setGeometry(QtCore.QRect(20, 60, 82, 17))
        self.radioButton.setChecked(True)
        self.radioButton.setAutoExclusive(True)
        self.radioButton.setText("RadioButton")
        self.gridLayoutRb = QtGui.QGridLayout(self.groupBox)
        self.gridLayoutRb.addWidget(self.radioButton, 0,0,1,1)
        self.show()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    app.setStyle(QtGui.QStyleFactory.create('cleanlooks'))
    window = MyApp()
    out_msg = app.exec_()
    sys.exit(out_msg)

1 个答案:

答案 0 :(得分:0)

如@ekhumoro所建议的,因为只有一个按钮,所以可以禁用单选按钮。缺点是按钮及其文本为灰色。如果这不是问题,那就是解决方案。

另一种方法是在groupBox中永久添加单选按钮,然后设置其坐标(通过将其属性更改为负值)以将其置于groupBox之外。 不使用布局时,这是可能的。