Python PyQt5-静态QSettings变量丢失它';首次使用后的s值,并变为无
我在PyQt5中的Python3.6/7项目中遇到了一个问题。在我的主文件中,我有如下内容:Python PyQt5-静态QSettings变量丢失它';首次使用后的s值,并变为无,python,pyqt5,python-3.6,qsettings,Python,Pyqt5,Python 3.6,Qsettings,我在PyQt5中的Python3.6/7项目中遇到了一个问题。在我的主文件中,我有如下内容: if __name__ == '__main__': ... app = QApplication(sys.argv) app.setOrganizationName("ORGANIZATION_NAME") app.setOrganizationDomain("ORGANIZATION_DOMAIN") app.setApplicationName("APPL
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()
总之,在类窗口的构造函数中,这是一个QWidget,我使用了另外几次行SettingsUtils.getSettingValue(“key”)
因此,如您所见,我从主脚本中初始化
设置sutils
类的\u SETTINGS
静态成员,然后使用它从主脚本中再次读取设置中的值,然后在窗口的构造函数中再次使用它几次。问题在于,当我第一次使用\u SETTINGS
变量时,它被正确实例化,但当我从窗口
构造函数再次读取它时,该变量被重置为无。我想我错过了一些非常愚蠢的东西,但我无法得到它是什么。提前感谢大家。提供一个我不重复您的问题,因此您有必要提供一个MREHi@eyllanesc,我已经设法解决了问题:按照您的建议构建一个可复制的示例,我意识到我不能。我的代码在迷你示例中工作,所以我意识到错误在我的代码中。具体地说,这是我导入设置sutils
类的方式:我将行从SettingsUtils import setingsutils
更改为从utils.SettingsUtils import setingsutils
,所有操作都正常。就像他试图加载另一个未初始化的设置utils类,对吗?顺便说一句,谢谢你的帮助。