У меня возникла проблема при создании версии моего скрипта pyinstaller onefile, мое состояние флажка не сохраняется, но, с другой стороны, когда pyinstaller собирает обычный exe-файл с файлами, состояние флажка сохраняется и работает отлично.
Обратите внимание, что я использую ресурсы (пакет)> __init__.py
для хранения своих значков и файла config.ini, и значки работают в обоих случаях: один файл или обычная сборка.
Изображение файлов проекта
__init__.py contents
from pathlib import Path
resources = Path(__file__).parent
config_ini = resources / "config.ini"
My PyQt5 Gui.
import sys
from PyQt5.QtCore import QSettings
import resources
import PyQt5.QtCore
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
settings = QSettings(str(resources.config_ini), QSettings.IniFormat)
class Window(QWidget):
def __init__(self):
QWidget.__init__(self)
self.main_ui()
self.buttons()
self.layout()
self.show()
settings.sync()
def main_ui(self):
self.setWindowTitle("Files Organizer")
def buttons(self):
self.checkbox_startup = QCheckBox("Run on start up")
self.checkbox_startup.setChecked(False)
self.checkbox_startup.setChecked(settings.value("startup_state", type=bool))
self.checkbox_startup.toggled.connect(self.startup_settings)
def layout(self):
self.horizontalGroupBox_options = QGroupBox("Options", self)
verticalbox_options = QVBoxLayout()
verticalbox_options.addWidget(self.checkbox_startup)
self.horizontalGroupBox_options.setLayout(verticalbox_options)
self.horizontalGroupBox_options.resize(360, 80)
self.horizontalGroupBox_options.move(20, 110)
def startup_settings(self):
startup_state = self.checkbox_startup.isChecked()
settings.setValue("startup_state", startup_state)
print("startup state is ", settings.value("startup_state", type=bool))
if __name__ == "__main__":
app = QApplication(sys.argv)
screen = Window()
screen.show()
app.exec()