一、新建一个由多个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_())