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 . Это переменная в которой может быть какая угодно переменная.