iic Hibernate oracle function file cmd vue中文 bootstrap管理系统模板 pmp视频 seo教程下载 jquery删除子元素 dplayer不能全屏 mac版的matlab好用吗 mysql函数返回结果集 linux重启mysql mysql更新 python中get函数 python的安装 python基础教程免费 java注释 java中的string 路由器有没有辐射 福昕阅读器绿色版 苹果手机总是自动重启 我的世界透视 苹果手机添加邮箱 大势至usb监控 qq飞车刷车 刷机精灵pc版 ps怎么做漂亮艺术字 熊猫头表情包制作 唯品会客服在哪 安装telnet mapinfo下载 matlab下载 perl正则表达式 游戏补丁 php递归函数 wps生成目录 ps打不开图片
当前位置: 首页 > 学习教程  > 编程语言

PyQt5快速上手基础篇10-QSettings用法

2020/8/11 19:04:53 文章标签:

前言

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

一、基础知识

1.QSettings简介

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

简而言之,QSettings 可以实现windows下写注册表和写ini文件功能,本文仅介绍写Ini配置文件,QSettings写ini配置文件常用方法如下:
在这里插入图片描述

二、实例

1. QT Designer设计UI

复制“ pyqt5快速上手基础篇8-菜单栏、工具栏和状态栏“中image文件夹内容和combox.ui,并修改combox.ui名字为settings.ui,用Qt Designer打开如下所示:
在这里插入图片描述
注意串口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页面。
在这里插入图片描述
通过界面修改波特率为9600
在这里插入图片描述
点击发送按钮,保存配置到config.ini文件
在这里插入图片描述
关闭窗口,再次打开,界面显示如下:
在这里插入图片描述
由此可知,我们使用QSettings实现了从confgi.ini文件中加载配置参数,并通过UI界面修改。

四、结语

(1)串口text显示

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

(2)获取资料

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

扫码关注公众号:物联网客栈,回复pyqt5即可。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提


本文链接: http://www.dtmao.cc/news_show_100059.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?