可以取消选择组框中的单个单选按钮
Single radiobutton in groupbox can be deselected
我试图搜索相应的主题,但我找不到,所以我来了。
我在 Python 和 PyQt4 中创建了一个应用程序,我可以在其中从文件导入一些数据。在导入过程中,我在其中动态创建了一些组框和单选按钮,供用户显示所需的数据。由于收集的数据,可能会发生一个组框只有一个单选按钮的情况。
问题是,当用户点击这个已经 selected-all-alone 单选按钮时,它被取消selected(中间没有黑点)。再次单击它 select 再次...
这是一个错误还是我应该设置一个 属性 以便这种行为不会发生(这意味着该按钮永远不会被取消select,因为它在组框中是单独的)?
如何防止这种行为?
示例(已添加)
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)
正如@ekhumoro 所建议的那样,可以禁用单选按钮,因为只有一个按钮。缺点是按钮及其文本是灰色的。如果这不是问题,那就是解决方案。
另一种方法是在groupBox中永久添加一个radionbutton,然后设置其坐标(通过将其属性更改为负值)将其置于groupBox之外。当不使用布局.
时,这仅可能
我试图搜索相应的主题,但我找不到,所以我来了。 我在 Python 和 PyQt4 中创建了一个应用程序,我可以在其中从文件导入一些数据。在导入过程中,我在其中动态创建了一些组框和单选按钮,供用户显示所需的数据。由于收集的数据,可能会发生一个组框只有一个单选按钮的情况。
问题是,当用户点击这个已经 selected-all-alone 单选按钮时,它被取消selected(中间没有黑点)。再次单击它 select 再次...
这是一个错误还是我应该设置一个 属性 以便这种行为不会发生(这意味着该按钮永远不会被取消select,因为它在组框中是单独的)?
如何防止这种行为?
示例(已添加)
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)
正如@ekhumoro 所建议的那样,可以禁用单选按钮,因为只有一个按钮。缺点是按钮及其文本是灰色的。如果这不是问题,那就是解决方案。
另一种方法是在groupBox中永久添加一个radionbutton,然后设置其坐标(通过将其属性更改为负值)将其置于groupBox之外。当不使用布局.
时,这仅可能