Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可以取消选择groupbox中的单个单选按钮_Python_Python 2.7_Pyqt_Pyqt4 - Fatal编程技术网

Python 可以取消选择groupbox中的单个单选按钮

Python 可以取消选择groupbox中的单个单选按钮,python,python-2.7,pyqt,pyqt4,Python,Python 2.7,Pyqt,Pyqt4,我试图搜索相应的主题,但我找不到任何,所以我在这里。 我已经用Python和PyQt4创建了一个应用程序,可以从文件中导入一些数据。在导入期间,我在其中动态创建一些GroupBox和单选按钮,以便用户显示所需的数据。由于收集的数据,groupbox中可能只有一个单选按钮 问题是,当用户点击这个已经被选中的单选按钮时,它被取消选中(中间没有黑点)。再次单击它,再次选择它 这是一个bug还是我应该设置一个属性以避免这种行为发生(意味着按钮永远不会被取消选择,因为它在groupbox中是单独的) 如何

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

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

这是一个bug还是我应该设置一个属性以避免这种行为发生(意味着按钮永远不会被取消选择,因为它在groupbox中是单独的)

如何防止这种行为

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


另一种方法是在groupBox中永久添加radionbutton,然后设置其坐标(通过将其属性更改为负值),将其置于groupBox之外。只有当不使用布局时,才有可能做到这一点

这当然不是一个bug。通常的处理方法是简单地禁用按钮。这样,用户就可以清楚地看到按钮的状态无法更改。
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)