pyQT5上位机实战记录

designer.exe路径:

  • D:\Python\Python38-32\Lib\site-packages\pyqt5_tools\Qt\bin

配置相关

  • Qt designer是拖拉控件实现UI界面的工具,设计完成保存后是 . ui 文件,pyuic5可以将 . ui 文件转换成 . py 文件,而 uic 可以将 . ui 文件转换成 . h 头文件
  • pyuic配置如下
program: python解释器路径
arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
working directory: $ProjectFileDir$

from…import * 语句与 import 区别

  • import 模块:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径;使用:模块.函数
  • from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径;使用:函数
  • from a import A:导入a.py模块中的A函数

.app.exec_()

  • 程序一直循环运行直到主窗口被关闭终止进程
  • 作用是运行主循环,必须调用此函数才能开始事件处理,调用该方法进入程序的主循环直到调用exit()结束
  • 主事件循环从窗口系统接收事件,并将其分派给应用程序小部件
  • 如果没有该方法,那么在运行的时候还没有进入程序的主循环就直接结束了,所以运行的时候窗口会闪退
  • 在退出时会返回状态代码
  • 不用sys.exit(app.exec_()),只使用app.exec_(),程序也可以正常运行,但是关闭窗口后进程却不会退出。

pyqt5借助QtDesigner设计图形界面的思路

  • 利用QtDesignert软件设计界面,并保存,然后通过pyuic5程序将ui文件转换为py文件,最后编写一个main.py文件,运行py文件并显示。

QT

  • 至少要安装Py-Qt5和pyqt5-tools
  • QTDesigner
    • 预览快捷键 ctrl+r
    • 初次启动会弹出这个“New Form”窗口,一般来说选择“Main Window”然后点击“Create”就可以了。
    • Qt Designer已经在Python3.5版本从PyQt5转移到了tools,因此我们还需要安装pyqt5-tools
    • 子线程不能调用主线程的QtGui类

QStringListModel介绍

  • 我们这里使用了一个QListView来和 QStringListModel进行连接,这样 QStringListModel的内容就会在QListView中显示出来,任何对 QStringListModel的修改都会显示在QListView中。这样我们就可以达到数据存储和显示的分离,我们可以专注我们的数据部分( QStringListModel,只要我们定义好接口),显示的部分就由QListView去负责,这就是QT的MVC(Model-View-Controller)机制,在MFC里也就是document和view。

界面修改

  • 在主线程之外的线程更改界面

python中的类

  • 对象是类的实例
  • 加了self的变量或者方法,只有实例才能调用
  • 调用类的方法:C.fun()
  • 调用类的实例的方法:c().fun()
  • 一般类大小,实例小写(首字母)。比如类叫DataParse,那么实例一般叫dataParse。
  • 普通继承方式和super继承方式单次继承的话没什么大区别。【多次继承super优势比较明显】

类中的下划线

  • 单下划线、双下划线、头尾双下划线说明:foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。
  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

HTTP

  • 403 - Forbidden
  • 404 - Not Found
  • 500 - Internal Server Error
  • 502 - Bad Gateway
  • 503 - Service Unavailable

exec_和show区别

  • 若使用exec_()的话,那么显示出来的注册界面就是模态的,意思就是当前只能对该注册界面进行操作,只有关闭了该界面才能对其他界面进行操作;若使用show()的话,那注册界面就是非模态的,则在显示了注册界面后,还能同时对登录界面进行操作(QDialog有exec_()方法,而QWidget没有)。

槽函数如果带参数

  • 槽函数带参数,需要用lambda表达式进行处理
  • eg:self.ui.checkBoxRadarLeftFront.stateChanged.connect(lambda: self.playRadarPos(self.ui.checkBoxRadarLeftFront))

pyqt5

  • . setWindowTitle()方法可以设置窗口标题
  • setAlignment(Qt.AlignCenter)可以让QLabel控件在窗口中居中显示【更方便】
    • 居中对齐还有:self.h_layout.addStretch(1)

事件处理

  • 常用的包括窗口关闭事件处理、鼠标事件处理以及键盘事件处理
  • 记得最后加上 accept 或者 ignore
    • ignoret()其实功能上就相当于pass

参考

环境配置,快速上手HelloWorld

  • pycharm+PyQt5+python最新开发环境配置,踩坑过程详解
  • 用Python写个上位机学习系列之第一个界面的设计 - pyqt5、pycharm、QtDesigner
  • pycharm配置
  • PyCharm安装配置Qt Designer+PyUIC教程
  • PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行 (详细)
  • 用Python写个上位机学习系列之第一个界面的设计 - 参考这里面的main.py程序
  • PyQt5(designer)入门教程
  • PyQt5(designer)入门教程2020
  • PyQt5教程
  • PyCharm+QTDesigner+PyUIC使用教程 - 非mainwindow的按钮点击

程序中的一些函数记录

python3 基础

  • 言简意赅python系列—if not x: 和 if x is not None: 和 if not x is None: 的区别
  • Python3 基本数据类型
  • python集合增加数据的操作方法
  • Python 内置函数
  • Python3 print 函数用法总结
  • Python set() 函数
  • Python time sleep()方法
  • json.dumps()和json.loads()
  • Python3 find()方法
  • Python find()方法
  • Python lambda介绍
  • Python format 格式化函数
  • 给大家带来一篇python with as的用法
  • python使用with as 读写文件

python的for in if 列表推导式用法

  • pyhton (for in if)用法
  • Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题

python中self

  • python中的面向对象
  • Python进阶-----静态方法(@staticmethod)
  • python中的self - 简明版
  • 一篇文章让你彻底搞清楚Python中self的含义

python中的继承

  • 关于Python中的类普通继承与super函数继承

  • Python 子类继承父类构造函数说明 - 菜鸟教程

  • Python学习笔记(4)Python中super的用法

  • python init()构造器中的super()使用用法

  • 【Python】python 普通继承方式和super继承方式

  • 菜鸟教程python教程super

python中网络请求

  • Python使用requests发送post请求
  • urllib.request详细介绍
  • HTTP 返回状态码

pyqt5界面相关

  • PyQt5高清屏幕自适应设置 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)

  • PyQt5中sys.argv和sys.exit(app.exec_())

  • PyQt中主函数app=QApplication(sys.argv) sys.exit(app.exec_())的作用

  • PyQt5系列教程(78):QSS入门3

  • PyQt(Python+Qt)学习随笔:模式窗口的windowModality属性与modal属性

  • Qt模态界面设置setWindowModality禁止其他界面响应

  • PyQt5布局管理之QGridLayout - setLayout - addWidget

  • 【Python】【PyQt5】addwidget的参数设置

  • Python基础之PyQt5关闭界面 - self.close

  • pyqt5-实时刷新页面(QApplication.processEvents())

  • Pyqt QApplication.processEvents() 防止页面锁死

  • QT窗体大小——setGeometry 和 resize区别

  • PyQt5布局管理之QGridLayout

  • QLineEdit使用详解

  • QTextEdit 实现 QLineEdit 的 setPlaceholderText() 和 setMaxLength ()函数

  • PyQt(Python+Qt)学习随笔:gridLayout的layoutRowMinimumHeight和layoutColumnMinimumWidth属性

  • PyQt5基本控件详解之QMessageBox

  • QT实验分析教程 Qt中的坐标系统 — geometry,frameGeometry()

  • qlabel 详解 - clear

  • Qt 之 QLabel - clear

鼠标相关

  • 窗口跟随鼠标移动
  • PyQt5编程:鼠标事件1
  • PyQt5编程-鼠标事件2
  • QT类之事件mousePressEvent以及mouseMoveEvent

多线程

  • Python3 多线程 - threading.Thread; Queue
  • Python中如何清空Queue?
  • Python threading中event的使用
  • python之event事件
  • Python多线程-Event(事件对象)
  • Python threading中lock的使用

启动界面

  • PyQt5编程(5):启动界面QSplashScreen
  • Qt学习16——程序启动画面QSplashScreen
  • 勤奋的小青蛙 - PyQt SplashScreen示例,PyQt启动界面演示

model/view介绍入门

  • QStringListModel的简单使用
  • Qt QStandardItemModel用法(超级详细)
  • pyqt QStandardItemModel()清空数据

WindowFlags

  • PyQt中WindowFlags使用详解
  • 无边框窗口FramelessWindowHint实现移动和缩放功能

关于字体

  • Qt 之字体设置(QFont)详解

关于右键菜单

  • PyQt5 右键菜单Context Menu 弹出的方法
  • PyQt5 之右键菜单
  • PyQt5 系统化学习: 表格与树
  • PyQt5中弹出框QDialog的show()和exec()的区别
  • PyQt5 右键菜单Context Menu 弹出的方法

关于显示图片

  • PyQt5 QPixmap简介
  • QT中QImage类

关于绘图

  • 【Python】 【绘图】plt.figure()的使用
  • matplotlib(二):画布(figure)与坐标轴(axes)的布局
  • matplotlib画图系列之设置栅格,axes脊柱(坐标轴),背景颜色
  • matplotlib命令与格式:tick_params参数刻度线样式设置

表单控件 QTableWidget

  • PyQt5 QTableWidget(表单控件)自适应窗口大小、栏位大小调整及布局
  • Pyqt5之QTableWidget隐藏表头和设置行列名称

QLabel

  • Qt学习:QLabel的用法及其程序示例

EventFilter

  • PyQt学习随笔:应用中通过installEventFilter安装重写的eventFilter捕获应用事件的方法
  • PyQt里的EventFilter
  • pyqt5 事件event 过滤 installEventFilter eventFilter QEvent.MetaCall

opencv

  • 学习opencv之cvtColor
  • cv2.imread()和cv2.cvtColor() 的使用
  • CNN编程中的问题——img.shape[0]、[1]、[2]到底代表什么
  • 机器学习进阶-图像基本操作-数值计算 1.cv2.add(将图片进行加和) 2.cv2.resize(图片的维度变换) 3.cv2.addWeighted(将图片按照公式进行重叠操作)
  • 彩色图像技术重要函数cv2.addWeighted()
  • Python-OpenCV 图像叠加or图像混合加权(cv2.addWeighted)
  • 介绍OpenCV的MAT和QT的Qimage
  • #最全面# Python 中如何将 Pyqt5 下的 QImage 对象转换成 PIL image 或 opencv MAT (numpy ndarray) 对象
  • Python图像库PIL的类Image及其方法介绍
  • 利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统

QTableView

  • QTableView根据内容自动调整大小(resizeColumnToContents解决不了的)
  • QTableView填充表格(函数:setSectionResizeMode()和setStretchLastSection())
  • QT表格的宽度自适应调整方法void setStretchLastSection ( bool stretch );
  • QT表格的宽度自适应调整方法

时间

  • python之time和datetime的常用方法

pyqtSignal

  • 关于PyQt5中自定义信号的几点理解 - 传入的参数
  • 《快速掌握PyQt5》第二章 信号与槽——裁判鸣枪与选手开跑

HTTP

  • HTTP: Request中的post和get区别
  • 知识点讲解二:关于requests里的timeout()
  • requests.post 小坑: 默认无超时,会阻塞

你可能感兴趣的:(#,python学习)