Как в PyQt5/PyQt6 сохранить состояние spinBox с использованием QSettings?
В данном коде реализовано сохранение состояния checkBox с использованием QSettings. Но, как в PyQt5(6) сохранить состояние spinBox? Помогите внести дополнение в код.
main.py
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QCheckBox, QGridLayout, QLabel, QSpacerItem, \
QSizePolicy
from PyQt6.QtCore import QSize, QCoreApplication, QSettings
from PyQt6.uic import loadUi
ORGANIZATION_NAME = 'Example App'
ORGANIZATION_DOMAIN = 'example.com'
APPLICATION_NAME = 'QSettings program'
SETTINGS_TRAY = 'settings/tray'
class MainWindow(QMainWindow):
# Переопределяем конструктор класса
def __init__(self):
super(MainWindow, self).__init__()
loadUi("qsetting.ui", self)
self.setWindowTitle("Settings Application") # Устанавливаем заголовок окна
# Обращаемся к настройкам программы
settings = QSettings()
# Забираем состояние чекбокса, с указанием типа данных:
# type=bool является заменой метода toBool() в PyQt5
check_state = settings.value(SETTINGS_TRAY, False, type=bool)
# Устанавливаем состояние
self.ui_ChBox.setChecked(check_state)
# подключаем слот к сигналу клика по чекбоксу, чтобы сохранять его состояние в настройках
self.ui_ChBox.clicked.connect(self.save_check_box_settings)
# Слот для сохранения настроек чекбокса
def save_check_box_settings(self):
settings = QSettings()
settings.setValue(SETTINGS_TRAY, self.ui_ChBox.isChecked())
settings.sync()
if __name__ == "__main__":
import sys
# Для того, чтобы каждый раз при вызове QSettings не вводить данные вашего приложения
# по которым будут находиться настройки, можно
# установить их глобально для всего приложения
QCoreApplication.setApplicationName(ORGANIZATION_NAME)
QCoreApplication.setOrganizationDomain(ORGANIZATION_DOMAIN)
QCoreApplication.setApplicationName(APPLICATION_NAME)
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec())
qsetting.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>467</width>
<height>270</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QCheckBox" name="ui_ChBox">
<property name="geometry">
<rect>
<x>230</x>
<y>80</y>
<width>81</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QSpinBox" name="spinBox">
<property name="geometry">
<rect>
<x>120</x>
<y>80</y>
<width>42</width>
<height>22</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>467</width>
<height>26</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
Источник: Stack Overflow на русском