【配套课件】https://doc.itprojects.cn/0001.zhishi/python.0008.pyqt5rumen/index.html
点击下方对应标题可获得对应功能的代码。
pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simple
PyQt中有非常多的功能模块,开发中最常用的功能模块主要有三个:
· QtCore:包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用
· QtGui:包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类
· QtWidgets:包含了一些列创建桌面应用的UI元素
可以参考PvQt官网的所有模块,地址: https://www.riverbankcomputing.com/static/Docs/PvQt5/module index.html#ref-module-index
C++具体实现的API文档,地址:https://doc.qt.io/gt-5/gtwidgets-module.html
用到什么功能就它相关的api或者别人分享的使用心得,这是学习最快的方式
窗口内的所有控件,若想在窗口中显示,都需要表示它的父亲是谁,而不能直接使用 show 函数显示
按钮对应的控件名称为 QPushButton ,位于 PyQt5.QtWidgets 里面
纯文本控件名称为 QLabel ,位于 PyQt5.QtWidgets 里面个
纯文本控件仅仅作为标识显示而已,类似输入内容前的一段标签提示(账号·密码)
输入框的控件名称为 QLineEdit,位于 PyQt5.QtWidgets 里面
可以下载icon图标网址:https://www.easyicon.net/
设置图标 mac无法显示,如果想设计一个漂亮的,应该隐藏标题栏,重新画标题栏
在Qt里面布局分为四个大类:
·QBoxLayout
·QGridLayout
·QFormLayout
·QStackedLayout
直译为:盒子布局
一般使用它的两个子类 QHBoxLayout 和 QVBoxLayout 负责水平和垂直布局
垂直布局示例:
网格布局,有人称之为九宫格布局
一般适用于提交数据form表单。比如:登录,注册类似的场景。
提供了多页面切换的布局,一次只能看到一个界面。 抽屉布局
在Qt中,生成窗口有三种方式
QWidget
QMainWindow
QDialog
控件和窗口的父类,自由度高(什么都东西都没有),没有划分菜单、工具栏、状态栏、主窗口 等区域
是QWidget的子类,包含菜单栏,工具栏,状态栏,标题栏等,中间部分则为主窗口区域
对话框窗口的基类
一般是为了实现点了某个按钮,弹出来的对话框
信号 和 槽 是Qt的核心内容
其实就是事件(按钮点击 、内容发生改变、窗口的关闭事件)或者是状态(check选中了,togglebutton 切换·)
当程序触发了某种状态或者发生了某种事件(比如:按钮被点击了.内容改变等等):那么即可发射出来一个 信号。
若想捕获这个信号,然后执行相应的逻辑代码:那么就需要使用到槽 槽实际上是一个的数:当信号发射出来后:会执行与之定的槽的数
为了能够实现,当点击某个按钮时执行某个逻辑,需要把具体的 信号和具体的 槽 函数绑定到一起.
操作大体流程如下:
对象.信号.connect(槽的数)
当出现信号后,会出现槽函数
信号 --------------------------> 槽
| |
| |
|--------绑定信号和槽-----------|
接收信号
自定义信号【重点】
除了接收Qt自带的信号之外,我们也可以自行定义信号,在合适的时机,自行发射信号
自定义信号需要使用到 pyqtSignal 来声明信号,并且需要在类中的函数之外声明。
如果会自定义信号,那么信号和槽基本上也就堂握了。否则永远只会接收别人发射出的信号
将我们终端内容显示到我们的窗口
主线程负责任务的刷新,子线程负责网络和任务的执行,最终使用线程间的共享全局变量来实现。
腾讯云-云函数: https://console.cloud.tencent.com
搜索云函数
百度云-函数计算
纯靠代码来编写界面,效率属实是有点底,今天我们用另外一个辅助设计图形化的软件 QT Designer
1.下载 https://build-system.fman.io/qt-designer-download
Mac版本:http://download.codetutor.top/software/Mac/Qt%20Designer.dmg
Windows版本: http://download.codetutor.top/software/win/Qt%20Designer%20Setup.exe
2.安装&运行
安装过程很简单,按照正常软件安装即可.
可以很明显的看到,程序是卡顿的
why?为什么会卡顿呢?大名鼎鼎的Qt不止于此吧!
答:只要是带界面的程序,一般来说程席运行后会用当前线程进行事件的检查、按等图形界面的更新操作,如果在执行某个逻辑代码例如登录时耗时非常验证,此时就会出现界面卡顿
怎样做更好?
答:我们一般将界面的显示用主线程来操作,逻辑功能代码或者耗时操作的代码都用另外线程进行处理这也就是为什么要研究PyQt中的多线程了,因为它能实现多任务,让界面用一个线程更新,让逻辑代码在另外一个线程中,互不影响
案例
1.用到的知识点
i.PyQT (做客户端程序)
ii.腾讯云函数(做服务器)
ii.多线程
iv.信号与槽(线程间传递信号)