QSettings注册表 json双模式配置文件

qt QSettings 类可用来保存软件设置,json文件也是保存软件设置的很好的方式.

这里结合json文件和QSettings注册表来保存软件设置.区别在于json文件在软件目录,每次更新时会被覆盖,注册表中设置持久有效,无需重新设置.使用时只针对json即可,只是在读取和写入时增加注册表代码。

from PyQt5.QtCore import QDir, QFileInfo, QStandardPaths, Qt, QUrl,QSettings
import os
import json
import getpath
import sys
import logging
from collections import OrderedDict
_setting_file="setting.json"
setting={
}
path='HKEY_CURRENT_USER\\Software\\NCS_REPORT'
setting2 = QSettings(path, QSettings.NativeFormat)
# init_value=""
def write_setting():
    logging.info("write_setting=====================")
    # new_value=json.dumps(setting)
    # if new_value==init_value:
    #     return
    logging.info("output")
    setting_filename = os.path.join(getpath.getpath(), _setting_file)
    # set_file=open(setting_filename, 'w',encoding="utf-8")
    # set_file.write(new_value)
    # set_file.close()
    set_file=open(setting_filename, 'w')
    json.dump(setting, set_file, indent=4)
    set_file.close()
    if sys.platform == "linux":
        pass
    else:#write to reg
        setting2.setValue("yqbh",setting["yqbh"])
        setting2.setValue("sblx",setting["sblx"])
        setting2.setValue("output_folder",setting["output_folder"])
        setting2.setValue("database",setting["database"])
        setting2.setValue("ejff_file",setting["ejff_file"])
        setting2.setValue("src_path",setting["src_path"])
        setting2.setValue("watch_path",setting["watch_path"])
def read_setting():
    global setting,init_value
    bookmark_file_name = os.path.join(QDir.toNativeSeparators(_config_dir()),
                                  _setting_file)
    file=open(bookmark_file_name,encoding="utf-8")
    setting=json.load(file,object_pairs_hook=OrderedDict)
    file.close()
    if sys.platform == "linux":
        pass
    else:#read from reg
        setting["yqbh"]=setting2.value("yqbh")
        setting["sblx"]=setting2.value("sblx")
        setting["output_folder"]=setting2.value("output_folder")
        setting["database"]=setting2.value("database")
        setting["ejff_file"]=setting2.value("ejff_file")
        setting["src_path"]=setting2.value("src_path")
        setting["watch_path"]=setting2.value("watch_path")
    setting["syy"].sort()
    # init_value=json.dumps(setting)
def _config_dir():
    location =getpath.getpath()#QDir.currentPath()#QStandardPaths.writableLocation(QStandardPaths.ConfigLocation)
    logging.info("configdir"+location)
    return '%s' % location

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值