- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码。如何在下次打开程序时将上次单击/选中的按钮存储为默认值?例如:如果我们运行程序并单击第三个按钮并关闭整个程序。每当我重新打开/重新运行程序时,默认情况下会选中最后一次单击的按钮(即默认情况下选中第三个按钮)
import sys
from PyQt5 import QtWidgets
class RadioButton(QtWidgets.QWidget):
def __init__(self):
super(). __init__()
self.setWindowTitle("Radio Button")
self.rbtn1 = QtWidgets.QRadioButton("Button1")
self.rbtn1.clicked.connect(self.getvalue)
self.rbtn2 = QtWidgets.QRadioButton("Button2")
self.rbtn2.clicked.connect(self.getvalue)
self.rbtn3 = QtWidgets.QRadioButton("Button3")
self.rbtn3.clicked.connect(self.getvalue)
self.rbtn4 = QtWidgets.QRadioButton("Button4")
self.rbtn4.clicked.connect(self.getvalue)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(self.rbtn1)
vbox.addWidget(self.rbtn2)
vbox.addWidget(self.rbtn3)
vbox.addWidget(self.rbtn4)
self.setLayout(vbox)
def getvalue(self):
if self.rbtn1.isChecked():
self.rbtn1.setChecked(True)
print("Radio button 1 is checked")
elif self.rbtn2.isChecked():
self.rbtn2.setChecked(True)
print("Radio button 2 is checked")
elif self.rbtn3.isChecked():
self.rbtn3.setChecked(True)
print("Radio button 3 is checked")
elif self.rbtn4.isChecked():
self.rbtn4.setChecked(True)
print("Radio button 4 is checked")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
win = RadioButton()
win.show()
sys.exit(app.exec_())
最佳答案
您可以使用 QSettings来保存和恢复数据。请注意,值被序列化为 QVariants ,因此您不能,例如,保存自定义 python 子类实例。
为了正确使用 QSettings 你必须设置 Qt 应用程序名称和组织名称(否则数据将不会存储在任何地方)。
可以通过其他方式保存设置,但对于一般用途,最好使用默认行为。
请注意,由于值存储为字符串,Qt 只能尝试猜测实际类型,因此在使用 value()
时最好指定类型。 (见下面的案例)。
然后,虽然默认情况下 Qt 能够自动对单选按钮进行分组并使它们独占(参见 QAbstractButton 的 autoExclusive 属性,对于 QRadioButtons 设置为 True),对于这种情况,最好依赖于 QButtonGroup ,这不仅可以更好地控制按钮,还可以使用分配给它们的唯一 ID 来识别组中的按钮成员。
最后,只需将按钮组的相应信号连接到保存当前选中按钮的函数即可。
from PyQt5 import QtWidgets, QtCore
class RadioButton(QtWidgets.QWidget):
def __init__(self):
super(). __init__()
self.setWindowTitle("Radio Button")
self.rbtn1 = QtWidgets.QRadioButton("Button1")
self.rbtn2 = QtWidgets.QRadioButton("Button2")
self.rbtn3 = QtWidgets.QRadioButton("Button3")
self.rbtn4 = QtWidgets.QRadioButton("Button4")
buttons = self.rbtn1, self.rbtn2, self.rbtn3, self.rbtn4
vbox = QtWidgets.QVBoxLayout(self)
self.optionGroup = QtWidgets.QButtonGroup()
for i, button in enumerate(buttons):
vbox.addWidget(button)
self.optionGroup.addButton(button, i)
# for Qt>=5.15:
# self.optionGroup.idToggled.connect(self.getvalue)
# otherwise:
self.optionGroup.buttonToggled[int, bool].connect(self.getvalue)
self.settings = QtCore.QSettings()
# read the value if it exists, otherwise use a default; note that
# the type MUST be specified, otherwise numbers would be read as
# strings, raising an exception and crashing the program in this case
default = self.settings.value('MyOption', 2, type=int)
self.optionGroup.button(default).setChecked(True)
def getvalue(self, id, checked):
if checked:
button = self.optionGroup.button(id)
print("{} is checked".format(button.text()))
self.settings.setValue('MyOption', id)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
app.setOrganizationName('MyOrganization')
app.setApplicationName('MyApplication')
win = RadioButton()
win.show()
sys.exit(app.exec_())
我强烈建议您仔细
学习 关于上面指定的所有类的整个文档。
关于python - 如何在 PyQt5 QRadioButton 中在下次打开时将最后选中的项目存储为默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67873510/
我遇到一种情况,我需要从测试人员那里获取 PySide GUI 中每个测试步骤的通过/失败信息。现在,我正在 for 循环中运行测试套件的数据,并尝试在 for 循环中获取 QRadioButton
我正在用不同级别的 QRadioButton 构建一个 QWidget。换句话说,我的小部件包含一些单选按钮和一个也包含单选按钮的子小部件(在屏幕截图中标记为 groupBox)。 这是我的问题:gr
在我的表单构造函数中,我检查各种成员的状态,然后根据单选按钮的状态用 true 或 false 调用 setChecked。 我原以为这会调用与单选按钮关联的回调/插槽,但它没有或没有工作。例如,我的
我正在开发 QT 应用程序。用户可以在其中创建多个对象,每个对象都将添加到一个列表中。在下一步中,用户应定位对象。选择放置哪个对象,应通过单击 QRadioButtons 进行(看起来合乎逻辑,因为添
我正在为学校开展一个小组项目。我组的一个成员创建了一个有大约 75 个单选按钮的窗口。我想在按下按钮时强制所有这些都“清除”或“未选中”。 有人知道这样做的好方法吗?我一直在研究 QObjectLis
我正在尝试将选中和取消选中的单选按钮的颜色更改为 Qt 样式表:Qt Stylesheet 但在此链接中,它仅指加载图像,但我如何更改它的颜色而不加载图像并更改边框颜色或样式单选按钮 要求附在图片中:
这是我的代码。如何在下次打开程序时将上次单击/选中的按钮存储为默认值?例如:如果我们运行程序并单击第三个按钮并关闭整个程序。每当我重新打开/重新运行程序时,默认情况下会选中最后一次单击的按钮(即默认情
我正在使用 C++ 和 QT 创建一个软件,我有两个小部件,一个是 QRadioButon 类型,一个是 QTabWidget。我的需求是我想从广播按钮发送信号,并且我希望每当检查按钮时,标签的内容都
目前我的表单上有一个 QRadioButton - 在表单的构造函数中 我正在做这样的事情 ui.radioButton->setChecked(true); 我在该语句中收到以下错误 Access
我需要将我的应用程序中所有单选按钮的尺寸调大...但是,我似乎只能将它们调小。 使用 "QRadioButton::indicator{width: 13px;height: 13px;}" 有效..
我正在尝试创建在任何时候只有一个处于事件状态的单选按钮。我试过使用 QButtonGroup 并将其设置为独占。但是它似乎不起作用。我的代码如下: from PyQt4 import QtGui, Q
我使用下面的代码动态创建了一组单选按钮: self.wPaymantType.qgbSomeSelectionGroup = QtGui.QGroupBox() vbox = QtGui.QVBoxL
我试图让 QRadioButton 的大小随着窗口的大小而改变。我需要的是,当我将窗口的大小调整为变大(或变小)时,QRadioButton 也应该调整为变大(或变小)。 我尝试使用我用于QPushB
例如,我有四个QRadioButtonrb1、rb2、rb3、rb4 。我设置了 rb1 和 rb3 选中: rb1->setChecked(true); rb3->setChecked(true);
我创建了几个 QradioButton 并连接到同一个 SLOT。在插槽中,我想知道哪个 QradioButton 调用插槽并执行相关操作。我发现有一种使用 qobject_cast 和 QObjec
我发现与选中/取消选中 QRadioButton 相关的问题。我用于检查(白点)和取消检查(没有白点)的图像未更新。我的问题是:我已经实现了一些 QRadioButton。第一次所有 QRadioBu
我正在做一个测验,当有人答错问题时,我想告诉他们他们答错了,正确答案是什么。我从数据库中获取问题,并在每次按下下一个按钮时设置文本 print("You chose the incorrect ans
问题 我的软件中有超过 5 个单选按钮,当我单击单选按钮时我想要它 然后与该按钮相关的文本出现在 Qtab 小部件中。 但我尝试了很多,但是当我点击一个单选按钮时,与该单选按钮相关的文本 不会出现在
这是我的代码,非常简单: #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWi
我正在尝试使用标准 QCheckbox/QRadioButton 使用 Qt 来创建多行复选框/单选按钮。 我没有找到直接解决方案,因为 QRadioButton{wrap:true;}没有效果。 唯
我是一名优秀的程序员,十分优秀!