У меня проблема с проектом Python 3.6 / 7 в PyQt5. В моем основном файле у меня есть что-то вроде этого:
if __name__ == '__main__':
...
app = QApplication(sys.argv)
app.setOrganizationName("ORGANIZATION_NAME")
app.setOrganizationDomain("ORGANIZATION_DOMAIN")
app.setApplicationName("APPLICATION_NAME")
app.setApplicationVersion("APPLICATION_VERSION_CODE")
SettingsUtils.initializeSettings()
# Install translators
...
value: list = SettingsUtils.getSettingValue("key")
if len(value) == 0:
window: Window = Window()
window.show()
...
# Run application until it terminates
sys.exit(app.exec_())
Затем в классе SettingsUtils:
class SettingsUtils:
__SETTINGS: QSettings = None
__SETTINGS_FILE_NAME: str = "./mySettings.ini"
@classmethod
def initializeSettings(cls) -> None:
cls.__SETTINGS = QSettings(
QSettings.IniFormat,
QSettings.UserScope,
"ORGANIZATION_NAME",
"APPLICATION_NAME"
)
cls.__SETTINGS.setPath(QSettings.IniFormat, QSettings.UserScope, cls.__SETTINGS_FILE_NAME)
cls.__SETTINGS.setFallbacksEnabled(False)
@classmethod
def getSettingValue(cls, key: str, valueType: type) -> Any:
if cls.__SETTINGS is None:
raise Exception("Settings not instantiated")
...
return cls.__SETTINGS.value(key, defaultValue, type=valueType)
@classmethod
def setSettingValue(cls, key: str, value: Any) -> None:
if cls.__SETTINGS is None:
raise Exception("Settings not instantiated")
...
cls.__SETTINGS.setValue(key, value)
cls.__SETTINGS.sync()
Внутри конструктора класса Window это QWidget, чтобы заключить,Еще пару раз я использую строку SettingsUtils.getSettingValue("key")
.
Итак, как вы можете видеть, я инициализирую статический член __SETTINGS
класса SettingsUtils
из своего основного сценария, а затем использую его для чтениязначение из настроек снова из моего основного скрипта, а затем я снова использую его пару раз в конструкторе класса Window
. Проблема в том, что переменная __SETTINGS
, когда я впервые использую ее, корректно создается, но когда я снова читаю ее из конструктора Window
, эта переменная сбрасывается обратно в None. Я думаю, что упускаю что-то очень глупое, но я не могу понять, что это такое. Спасибо всем заранее.