Content
- 1. main .py
See Using QSettings in PyQt5. I propose to write a small application, which will be a single check box, the state of which we will save in the settings. Status checkbox will be saved by clicking on the checkbox. After closing the program and re-open this checkbox will be put to the state in which it was at the close of the program.
main .py
- from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QCheckBox, QGridLayout, QLabel, QSpacerItem, \
- QSizePolicy
- from PyQt5.QtCore import QSize, QCoreApplication, QSettings
- ORGANIZATION_NAME = 'Example App'
- ORGANIZATION_DOMAIN = 'example.com'
- APPLICATION_NAME = 'QSettings program'
- SETTINGS_TRAY = 'settings/tray'
- class MainWindow(QMainWindow):
- """
- Checkbox.
- Will initialize in the constructor.
- """
- check_box = None
- # Override the class constructor
- def __init__(self):
- # Be sure to call the super class method
- QMainWindow.__init__(self)
- self.setMinimumSize(QSize(480, 240)) # Set sizes
- self.setWindowTitle("Settings Application") # Set a title
- central_widget = QWidget(self) # Create a central widget
- self.setCentralWidget(central_widget) # Set the central widget
- grid_layout = QGridLayout() # Create a QGridLayout
- central_widget.setLayout(grid_layout) # Set the layout into the central widget
- grid_layout.addWidget(QLabel("Application, which can minimize to Tray", self), 0, 0)
- # Add a checkbox, which will depend on the behavior of the program when the window is closed
- self.check_box = QCheckBox('Settings CheckBox for minimizing to tray')
- grid_layout.addWidget(self.check_box, 1, 0)
- grid_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding), 2, 0)
- # Get settings
- settings = QSettings()
- # Get checkbox state with speciying type of checkbox:
- # type=bool is a replacement of toBool() in PyQt5
- check_state = settings.value(SETTINGS_TRAY, False, type=bool)
- # Set state
- self.check_box.setChecked(check_state)
- # connect the slot to the signal by clicking the checkbox to save the state settings
- self.check_box.clicked.connect(self.save_check_box_settings)
- # Slot checkbox to save the settings
- def save_check_box_settings(self):
- settings = QSettings()
- settings.setValue(SETTINGS_TRAY, self.check_box.isChecked())
- settings.sync()
- if __name__ == "__main__":
- import sys
- # To ensure that every time you call QSettings not enter the data of your application,
- # which will be the settings, you can set them globally for all applications
- QCoreApplication.setApplicationName(ORGANIZATION_NAME)
- QCoreApplication.setOrganizationDomain(ORGANIZATION_DOMAIN)
- QCoreApplication.setApplicationName(APPLICATION_NAME)
- app = QApplication(sys.argv)
- mw = MainWindow()
- mw.show()
- sys.exit(app.exec())
а как можно это сделать без чек бокса
Вы можете в QSettings записать откуда угодно bool переменную без всяких чекбоксов.
Обратите внимание на some_variable . Это переменная в которой может быть какая угодно переменная.