pyqt5将配置信息保存为json格式_checkBox组件

一、新建一个由多个checkBox构成的窗口

二、判断checkBox此时是否被选中

如果选中则为1,没选中为0,定义一个变量 oper 记录下来

        if self.checkBox_1.isChecked():  # 判断复选框是否选中
            oper = 1
        else:
            oper = 0
        if self.checkBox_2.isChecked():
            oper2 = 1
        else:
            oper2 = 0
        if self.checkBox_3.isChecked():
            oper3 = 1
        else:
            oper3 = 0
        if self.checkBox_4.isChecked():
            oper4 = 1
        else:
            oper4 = 0
        if self.checkBox_5.isChecked():
            oper5 = 1
        else:
            oper5 = 0

三、新建一个字典,记录KEY和VALUE

KEY值为checkBox的名字,例如:test1、test2...

VALUE值为checkBox是否勾选的状态,这里可以用0或1表示

self.checkBox_1.text()        #获取checkBox的文本内容

dict_new = {self.checkBox_1.text(): oper, self.checkBox_2.text(): oper2, self.checkBox_3.text(): oper3,self.checkBox_4.text(): oper4, self.checkBox_5.text(): oper5}

四、将字典转成json

json_str = json.dumps(dict_new, indent=2)
        with open(r"data.json", "w") as f:
            f.write(json_str)

结果浏览:

五、导入json的配置到checkBox组件中

    def load(self):
        f = open('data.json', 'r')
        data_load = json.load(f)
        print(data_load)

        for k, v in data_load.items():
            print(k)
            print(v)
            if k == "test1":
                if v == 1:
                    self.checkBox_1.setChecked(True)
            if k == "test2":
                if v == 1:
                    self.checkBox_2.setChecked(True)
            if k == "test3":
                if v == 1:
                    self.checkBox_3.setChecked(True)
            if k == "test4":
                if v == 1:
                    self.checkBox_4.setChecked(True)
            if k == "test5":
                if v == 1:
                    self.checkBox_5.setChecked(True)

六、全部实现代码如下

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets
import json

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(382, 239)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.checkBox_1 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_1.setGeometry(QtCore.QRect(40, 10, 151, 41))
        self.checkBox_1.setObjectName("checkBox_1")
        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(250, 20, 91, 19))
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(40, 70, 91, 19))
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(250, 70, 91, 19))
        self.checkBox_4.setObjectName("checkBox_4")
        self.checkBox_5 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_5.setGeometry(QtCore.QRect(40, 110, 91, 19))
        self.checkBox_5.setObjectName("checkBox_5")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(240, 150, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.save)

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(100, 150, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.clicked.connect(self.load)


        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.checkBox_1.setText(_translate("MainWindow", "test1"))
        self.checkBox_2.setText(_translate("MainWindow", "test2"))
        self.checkBox_3.setText(_translate("MainWindow", "test3"))
        self.checkBox_4.setText(_translate("MainWindow", "test4"))
        self.checkBox_5.setText(_translate("MainWindow", "test5"))
        self.pushButton.setText(_translate("MainWindow", "保存配置"))
        self.pushButton_2.setText(_translate("MainWindow", "加载配置"))


    def save(self):
        if self.checkBox_1.isChecked():  # 判断复选框是否选中
            oper = 1
        else:
            oper = 0
        if self.checkBox_2.isChecked():
            oper2 = 1
        else:
            oper2 = 0
        if self.checkBox_3.isChecked():
            oper3 = 1
        else:
            oper3 = 0
        if self.checkBox_4.isChecked():
            oper4 = 1
        else:
            oper4 = 0
        if self.checkBox_5.isChecked():
            oper5 = 1
        else:
            oper5 = 0


        dict_new = {self.checkBox_1.text(): oper, self.checkBox_2.text(): oper2, self.checkBox_3.text(): oper3,
                    self.checkBox_4.text(): oper4, self.checkBox_5.text(): oper5}
        for KEY, VALUE in dict_new.items():
            print(KEY)
            print(VALUE)

        json_str = json.dumps(dict_new, indent=2)
        with open(r"data.json", "w") as f:
            f.write(json_str)

    def load(self):
        f = open('data.json', 'r')
        data_load = json.load(f)
        print(data_load)

        for k, v in data_load.items():
            print(k)
            print(v)
            if k == "test1":
                if v == 1:
                    self.checkBox_1.setChecked(True)
            if k == "test2":
                if v == 1:
                    self.checkBox_2.setChecked(True)
            if k == "test3":
                if v == 1:
                    self.checkBox_3.setChecked(True)
            if k == "test4":
                if v == 1:
                    self.checkBox_4.setChecked(True)
            if k == "test5":
                if v == 1:
                    self.checkBox_5.setChecked(True)




import sys
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值