QSettings注冊表 json雙模式配置文件

qt QSettings 類可用來保存軟件設置,json文件也是保存軟件設置的很好的方式.

這里結合json文件和QSettings注冊表來保存軟件設置.區別在于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:#     returnlogging.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":passelse:#write to regsetting2.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_valuebookmark_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":passelse:#read from regsetting["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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21333.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

14.FreeRTOS 消息緩存 Message Buffer

FreeRTOS 消息緩存(Message Buffer)的使用 介紹 在實時操作系統(RTOS)中,任務之間的通信是一個非常重要的方面。FreeRTOS 提供了多種機制來實現任務間通信,其中之一就是消息緩存(Message Buffe…

【IC驗證】一文速通多通道數據整型器(MCDF)

目錄 01 README 02 MCDF設計結構 2.1 功能描述 2.2 設計結構 2.3 接口與時序 2.3.1 系統信號接口 2.3.2 通道從端接口 2.3.3 整形器接口 2.3.4 控制寄存器接口 2.3.4.1 接口時序圖 2.3.4.2 各數據位信息 03 驗證框圖 3.1 reg_pkg 3.1.1 reg_trans 3.1.2 reg_driv…

【一刷《劍指Offer》】面試題 27:二叉搜索樹與雙向鏈表

牛客對應題目鏈接:二叉搜索樹與雙向鏈表_牛客題霸_牛客網 (nowcoder.com) 力扣對應題目鏈接:LCR 155. 將二叉搜索樹轉化為排序的雙向鏈表 - 力扣(LeetCode) 一、《劍指 Offer》對應內容 二、分析題目 上面力扣上的這道題目和牛客…

AGM DAP-LINK 離線燒錄報錯信息分析

DAP-LINK 支持離線燒錄。 即:先把要燒錄的bin 燒錄到DAP-LINK 中;然后DAP-LINK 可以脫離PC,上電后通過按鍵對目標板進行燒錄。 CMSIS-DAP模式 跳線JGND斷開,狀態LED D4快閃,D3常亮(串口狀態)。…

deepin開發web前端:探索、挑戰與無限可能

deepin開發web前端:探索、挑戰與無限可能 在數字化浪潮洶涌的時代,Web前端作為連接用戶與數字世界的橋梁,其重要性日益凸顯。而deepin作為一款優秀的開源操作系統,為Web前端開發者提供了廣闊的舞臺。本文將圍繞deepin開發Web前端…

接口設計的最佳實踐-下篇

大多數程序員,做得最多的事,也不過是寫接口這件事而已。 今天繼續總結下接口設計需要注意的點。盡量每種都給出具體的場景、案例等,希望大家能有所收獲。 1、接口冪等 冪等性:是指一個操作或者一個服務,無論執行多少…

小程序怎樣進行本地存儲的讀、寫、刪、清?

小程序進行本地存儲的讀、寫、刪、清操作,可以通過微信小程序提供的API來實現。這些API分為同步和異步兩種類型,以滿足不同的使用場景和需求。 同步操作 同步操作會阻塞后續的代碼執行,直到操作完成。 寫入本地緩存(寫&#xf…

Vue3 - Mac系統用文本編輯寫html不顯示效果的坑

平時在win系統下,可以直接對文本進行編輯,非常的舒服。 在mac系統中,也有類似的功能,就是文本編輯,沒想到居然還有坑。 這是我mac系統中創建的html文件,想著沒有幾行代碼,就沒有開編輯器了&am…

C語言 | Leetcode C語言題解之第125題驗證回文串

題目&#xff1a; 題解&#xff1a; bool isalumn(char c) {return (c > a && c < z) || (c > A && c < Z) || (c > 0 && c < 9); }bool isPalindrome(char* s) {for (int left 0, right strlen(s) - 1; left < right; left, …

【數據庫系統概論】事務

概述 在數據庫系統中&#xff0c;事務&#xff08;Transaction&#xff09;是指一組作為單個邏輯工作單元執行的操作。這些操作要么全部成功&#xff08;提交&#xff09;&#xff0c;要么全部失敗&#xff08;回滾&#xff09;。事務的主要目的是確保數據庫的完整性和一致性&…

AI與NLP的完美結合:揭秘ChatGPT

AI與NLP的完美結合&#xff1a;揭秘ChatGPT 一、AI大模型的發展歷程 AI大模型的發展可追溯到早期的深度學習技術。深度學習通過多層神經網絡處理復雜的數據模式&#xff0c;顯著提升了圖像識別、語音識別等領域的性能。隨后&#xff0c;研究人員將注意力轉向NLP&#xff0c;開…

【傳知代碼】多視圖3D目標檢測位置嵌入變換(論文復現)

前言&#xff1a;三維目標檢測技術正逐漸成為計算機視覺領域的重要研究方向。特別是在自動駕駛、增強現實&#xff08;AR&#xff09;、虛擬現實&#xff08;VR&#xff09;以及機器人導航等應用中&#xff0c;對三維空間內目標的精準檢測與定位顯得尤為重要。然而&#xff0c;…

人臉解鎖優化關鍵過程

一.人臉解鎖的關鍵過程 1. 按下power鍵 2. 屏幕點亮 3. 打開前攝 4. 獲取第一幀并傳給算法 5. 算法完成并返回結果 6. 解鎖完成并關閉相機 二. 相機優化點 1. 定制人臉解鎖自己的pipeline,去掉不必要的node,理論上只需要一個preview的pipeline 2. 使用AE warm up&#xff0c;減…

SAP_SD模塊-銷售交貨并開票后發現物料沒維護價格的完整處理方法(含POD功能)

銷售流程完結后&#xff0c;發現物料價格沒維護時&#xff0c;如何處理 一、業務背景&#xff1a; 1、問題發現時間&#xff1a;2024年6月2日&#xff1b; 2、問題描述&#xff1a; 2024年5月份的單據業務存在交貨成本和開票成本為0的單據&#x…

【JavaScript腳本宇宙】揭秘HTTP請求庫:深入理解它們的特性與應用

深度揭秘&#xff1a;六大HTTP請求庫的比較與應用 前言 在這篇文章中&#xff0c;我們將探討六種主要的HTTP請求庫。這些庫為處理網絡請求提供了不同的工具和功能&#xff0c;包括Axios、Fetch API、Request、SuperAgent、Got和Node-fetch。通過本文&#xff0c;你將對每個庫…

PyCharm如何更換解析器為Anaconda,如何自己切換python環境

自己使用了Anaconda創建了一個環境&#xff1a; 如何在工具PyCharm中切換自定義的python環境呢&#xff1f; 1. 點擊 設置 2. 項目&#xff1a;python - Python解析器 此時會發現&#xff0c;只有一個默認的版本。 3. 點擊 添加解析器 - 添加本地解析器 4. 選擇 conda 環境…

AI智能語音機器人系統如何對接科大訊飛接口

關于AI語音機器人的介紹有很多&#xff0c;但是由于商業化&#xff0c;沒有一個能真正說明白的&#xff0c;當然&#xff0c;我們搭建的AI智能機器人系統也是商業化的&#xff0c;畢竟業務是做這方面的&#xff0c;但是價格絕對是公道的&#xff0c;廢話不多說了&#xff0c;我…

探索API接口:技術深度解析與應用實踐

在當今的軟件開發和數據交換領域&#xff0c;API&#xff08;應用程序編程接口&#xff09;已經成為了一個不可或缺的工具。它允許不同的軟件應用程序或組件之間進行交互和通信&#xff0c;從而實現了數據的共享和功能的擴展。本文將深入探討API接口的技術原理、設計原則以及在…

Qt各發布版本介紹與選擇

一.Qt各個主要版本介紹 1.Qt4 Qt4的第一個版本是Qt 4.0&#xff0c;發布于2005年6月1日。 Qt 4的最后一個版本是Qt 4.8.7&#xff0c;發布時間是2015年6月10日。 2.Qt5 &#xff08;1&#xff09;Qt5的第一個版本是Qt 5.0&#xff0c;發布于2012年12月19日。 &#xff08;2&…

ubuntu安裝notion

一、背景&#xff1a; 不用windwos系統&#xff0c;完全可以&#xff0c;然后基本軟件都有&#xff0c;怎么安裝notion呢 二、步驟 1. 更新源 echo "deb [trustedyes] https://apt.fury.io/notion-repackaged/ /" | sudo tee /etc/apt/sources.list.d/notion-repa…