【python版QT学习】pyQT5上位机实战笔记

网友投稿 1840 2022-05-29

配置相关

designer.exe

拖拉控件实现UI界面的工具,设计完成保存后是.ui文件

Program参数:D:\Python\Python38-32\Scripts\designer.exe

Working directory参数:$FileDir$

pyuic5

将界面.ui 文件转换成.py文件

Program参数:D:\Python\Python38-32\Scripts\pyuic5.exe

Argument参数:$FileName$ -o $FileNameWithoutExtension$.py

Working directory参数:$FileDir$

pyrcc5

将资源(图片).qrc 文件转换成.py文件

Program参数:D:\Python\Python38-32\Scripts\pyrcc5.exe

Argument参数:$FileName$ -o $FileNameWithoutExtension$.py

Working directory参数:$FileDir$

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

关于休眠

中断不能休眠

线程可以休眠

关于None和False的一点对比

None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False

但是None和[]不是一回事!!!

frames = [] if not frames: print("000") else: print("111") if frames == None: print("222") else: print("333")

1

2

3

4

5

6

7

8

9

10

11

12

问题记录

pyqtSignal的参数应该是list

并行视频显示,提示'NoneType' object has no attribute 'width'解决办法

incr抛出几个信号量由下面的线程决定

图片资源

播放卡,注意是多少时间放一次

控件不能拉伸?

布局的缘故?

pycharm 报错Try to run this command from the system terminal. Make sure that you use the correct version of 'pip' installed for your Python interpreter located at 'D:\Python\Python38-32\python.exe'.(参考1 或者 参考2)

打开cmd命令行,或者PowerShell终端

进入python.exe所在文件夹(如果设置了PATH,可以在任意目录下操作)

设置源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

更新pip:python -m pip install --upgrade pip

下载某个包:pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple

或者python.exe -m pip install xxx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

AttributeError: module ‘serial’ has no attribute 'Serial’解决办法

类实例作为“某个函数”的形式参数

在这个“某个函数”改变类实例的成员,实际参数也是会改变的!

class ServerFileNode: def __init__(self): self.radar = 1 class yFunction: def __init__(self, serverFileNode): self.serverFileNode = serverFileNode self.serverFileNode.radar = self.serverFileNode.radar + 1 serverFileNode = ServerFileNode() yFunction(serverFileNode) print(serverFileNode.radar)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

pyqt5-对文本样式进行操作

参考

环境配置,快速上手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 读写文件

get函数和get_nowait函数

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 返回状态码

ImportError most likely due to a circular import 解决办法

python编写代码circular import问题

解决循环import的问题

python 循环依赖问题

ImportError: cannot import name ‘db‘ from partially initialized module ‘app‘ (most likely due to a c

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队列的三种队列实现方法

Python threading中event的使用

python之event事件

Python多线程-Event(事件对象)

Python threading中lock的使用

字节串

Python bytes类型及用法

启动界面

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()的区别

【python版QT学习】pyQT5上位机实战笔记

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实现人脸实时签到系统

Python cv2.circle详细介绍

python opencv3 向图像里写字

Pyhon利用OpenCV在图片上显示文字及保存

Python 用 OpenCV 画直线 (3)

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 Qt 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GIT笔记
下一篇:Linux系列:shell编程之变量
相关文章