快捷搜索:  汽车  科技

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)复制“ pyqt5快速上手基础篇8-菜单栏、工具栏和状态栏“中image文件夹内容和combox.ui,并修改combox.ui名字为settings.ui,用Qt Designer打开如下所示:1. QT Designer设计UI用户通常期待应用程序在不同会话中保留其设置(窗口大小和位置、设置项等等)。这些信息在 Windows 上经常存储在注册表中,在 Mac OS X 和 iOS 上则保存在 plist 文件中。在 Unix 系统上,由于缺少标准,许多应用程序(包括 KDE 程序)使用 ini 文本文件(来存储设置)。QSettings 是围绕这些技术提供的一个抽象层。简而言之,QSettings 可以实现windows下写注册表和写ini文件功能,本文仅介绍写Ini配置文件,QSettings写ini配置文件常用方法如下:二、实例

前言

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

一、基础知识

1.QSettings简介

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

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

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(1)

二、实例

1. QT Designer设计UI

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

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(2)

注意串口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页面。

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(3)

通过界面修改波特率为9600

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(4)

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

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(5)

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

pyqt5操作教程(PyQt5快速上手基础篇10-QSettings用法)(6)

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

四、结语

(1)串口text显示

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

作者:小驿

寄语:长大后我们才知道,原来活成自己想要的样子有多么不容易!

猜您喜欢: