pyqt5 qtableview 添加combox_PyQt5快速上手基础篇10-QSettings用法

这篇博客介绍了如何在PyQt5中使用QSettings来保存用户界面设置,特别是在QTableView中添加ComboBox,并在程序启动时加载用户上次的配置。通过示例展示了创建UI、转换UI文件、编写Python程序读取和保存配置到config.ini文件的过程。文章强调了QSettings在不同操作系统下存储用户设置的能力,以及在ComboBox中的应用区别。
摘要由CSDN通过智能技术生成

d1459c7287b04fe67df0d7747eabb520.png

前言

本节我们学习使用PyQt5的QSettings的用法,使用QSettings可以记住用户操作UI界面设置的参数,下次打开软件的时候,会直接加载用户上一次设置的参数。

一、基础知识

1.QSettings简介

用户通常期待应用程序在不同会话中保留其设置(窗口大小和位置、设置项等等)。这些信息在 Windows 上经常存储在注册表中,在 Mac OS X 和 iOS 上则保存在 plist 文件中。在 Unix 系统上,由于缺少标准,许多应用程序(包括 KDE 程序)使用 INI 文本文件(来存储设置)。QSettings 是围绕这些技术提供的一个抽象层。

简而言之,QSettings 可以实现windows下写注册表和写ini文件功能,本文仅介绍写Ini配置文件,QSettings写ini配置文件常用方法如下:

71784aa27c431dd01d498fb76df0c9bd.png

二、实例

1. QT Designer设计UI

复制“ pyqt5快速上手基础篇8-菜单栏、工具栏和状态栏“中image文件夹内容和combox.ui,并修改combox.ui名字为settings.ui,用Qt Designer打开如下所示:

863a3d18bd89d1985aa46a5f6b04281f.png

注意串口combox没有任何数据显示,是因为我们没有使用Qt Designer为其添加item。

2 将*.ui转换为ui_settings.py

进入run.py目录,输入如下命令:

pyuic5 -o ui_settings.py settings.ui

3 编写python程序

# encoding=utf-8
import sys
import PyQt5.QtWidgets as qw
import PyQt5.QtCore as qc
import ui_settings
# sys.setrecursionlimit(1000000)
class myForm(qw.QMainWindow, ui_settings.Ui_MainWindow):
 def __init__(self):
 super().__init__()
 self.setupUi(self)
 #load settings
 self.settings = qc.QSettings("config.ini", qc.QSettings.IniFormat)
 self.com = self.settings.value("SETUP/COM_VALUE")
 self.baud = self.settings.value("SETUP/BAUD_VALUE")
 self.databit = self.settings.value("SETUP/DATABIT_VALUE")
 self.polarity = self.settings.value("SETUP/POLARITY_VALUE")
 # odd even  none
 if (self.polarity == "odd"):
 self.polarity = "奇校验"
 elif(self.polarity == "even"):
 self.polarity = "偶校验"
 elif(self.polarity == "none"):
 self.polarity = "无"
 self.stopbit = self.settings.value("SETUP/STOPBIT_VALUE")
 self.flow =  self.settings.value("SETUP/FLOW_VALUE")
 if (self.flow == "cts"):
 self.flow =  "RTS/CTS"
 print("odd check taest")
 elif(self.flow == "xon"):
 self.flow =  "XON/XOFF"
 elif(self.flow == "none"):
 self.flow =  "无"
 #init gui
 self.comboBox_uart.addItem(self.com)
 self.comboBox_baud.setCurrentText(self.baud)
 self.comboBox_databit.setCurrentText(self.databit)
 self.comboBox_polarity.setCurrentText(self.polarity)
 self.comboBox_stopbit.setCurrentText(self.stopbit)
 self.comboBox_flow.setCurrentText(self.flow)
 self.statusbar.showMessage("status:ok")
 self.comboBox_baud.currentIndexChanged.connect(self.combox_baud_cb)
 self.pushButton.clicked.connect(self.btn_test_cb)
 def combox_baud_cb(self):
 self.baud = self.comboBox_baud.currentText()
 def btn_test_cb(self):
 self.settings.setValue("SETUP/BAUD_VALUE", self.baud)
        qw.QMessageBox.information(self, "提示", "QSettings保存成功")
 
if __name__ == '__main__':
    app = qw.QApplication(sys.argv)
    w1 = myForm()
    w1.show()
    app.exec_()

上述程序启动时候首先从config.ini配置文件中获取配置信息,然后利用配置信息初始化UI界面。

4 config.ini配置文件

[SETUP]
COM_VALUE=COM4
BAUD_VALUE=115200
DATABIT_VALUE=7
POLARITY_VALUE=even
STOPBIT_VALUE=1.5
FLOW_VALUE=none

三、运行

进入文件目录,输入python3 run.py,即可弹出上述用QT Designer设计出来的MainWindow页面。

3c61bf19c9a48e473cde01711a51ed14.png

通过界面修改波特率为9600

5d6a004e4aa63df7680637bd1a4a02ec.png

点击发送按钮,保存配置到config.ini文件

cff8b37eee9d1e76f2116ea2dffb084c.png

关闭窗口,再次打开,界面显示如下:

111c29a325ccb815d47873a88720bcfc.png

由此可知,我们使用QSettings实现了从confgi.ini文件中加载配置参数,并通过UI界面修改。

四、结语

(1)串口text显示

注意combox_uart的显示和其他显示不同,使用了add Item()方法,其他几个combox使用setCurrentText(),因为串口combox下没有可显示item。

(2)获取资料

关注公众号:一个物联网项目的前世今生,回复pyqt5即可。

寄语:一沙一世界,一叶一菩提

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值