Pyqt5 设置保存上一次结果(配置文件)

效果

        每次打开Pyqt5打包后的程序,默认显示的是上一次的结果
例如下图的 文件路径、表名、类型等

        

大致的思路

        Pyqt5自带的方法QSettings实现保存上一次的设置,其思路是读取ini文件,如果不存在就是程序的初始状态,如果存在则可以读取ini文件里面的内容,开发者可将读取的内容绑定至具体的控件上,实现每一次运行程序,都是加载上一次的状态

        关键在于:需要开发者选择将哪些状态进行保存和加载
 

用法

        导入包 

                from PyQt5.QtCore import QSettings

        初始化

                QSettings('myapp.ini', QSettings.IniFormat)

class MyMainForm(QMainWindow, Ui_DownloadImages):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)

        self.setupUi(self)
        self.settings = QSettings('myapp.ini', QSettings.IniFormat)

        保存结果

                self.settings.setValue(key, value)

input_data = {
    "file_path": "具体的数据",
    "new_dir_path": "具体的数据",
    "col_list": "具体的数据",
    "sheet_name": "具体的数据",
    'img_width': "具体的数据",
    'img_height': "具体的数据",
    "write_to_excel": "具体的数据",
    "write_to_dir": "具体的数据",
    "use_agent": "具体的数据",
}
for key, value in input_data.items():
    self.settings.setValue(key, value)

                程序会在py文件的同级目录下生一个ini文件,执行上面的代码时,就会将对应数据写入这个ini文件

        加载文件

                self."具体的控件".setText(self.settings.value(key, value))

# 初始化信息
def init_info(self):
    # 加载上一次的结果
    self."具体的控件".setText(self.settings.value('sheet_name', ""))
    self."具体的控件".setText(self.settings.value('file_path', ""))
    self."具体的控件".setText(self.settings.value('new_dir_path', ""))
    self."具体的控件".setText(self.settings.value('img_width', "75"))
    self."具体的控件".setText(self.settings.value('img_height', "75"))
    col_list = self.settings.value('col_list', [])

                通常会使用一个函数实现加载上一次结果的功能,在程序运行时,执行这个函数即可

补充

        这里给出几个比较常用的控件绑定方式

        复选框

                由于复选框的值,在后端接收的True或False,但是写入文件确实字符串格式的true或false,所以需要进行格式转化,将字符串转为对应的值

write_to_excel = self.settings.value('write_to_excel', True)
write_to_excel = True if write_to_excel == 'true' or write_to_excel != "false" else False
self.writeExcelCheckBox.setChecked(write_to_excel)

        listWidget

                listwidget对象其是一个一个item,所有通过列表的方式,将每一个值都添加进listwidget中

col_list = self.settings.value('col_list', [])
for col_name in col_list:
    self.listWidget.addItem(col_name)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值