GUI:Graphical User Interface,又称图形化用户接口(接口:对接的入口,在计算机中“接口”常指前端和后端交互的入口,即API)。会有一个图形化的界面展示给用户,与用户交互。用户只需要鼠标点击就可以控制,而不是输入代码指令,接收枯燥的反馈。
而 GUI 编程,就是编写图形化界面的软件供用户使用。
官网由相关介绍:https://wiki.python.org/moin/GuiProgramming
有跨平台的库,也有针对某一平台的库(体验更好)。
官方库:Tkinter
其他常用库:PyQt、PySide、wxPython、PyGUI、Kivy、Libavg
选库标准:
讨巧的方法:那个人多用哪个,群众的眼睛是雪亮的。
PyQt:
Qt 最流行的 Python 绑定之一,PyQt 使用 Python 重新实现了一遍 Qt 的功能,在实现的时候, 几乎保持了全部原有的 API,本质还是 Qt。
注意:Qt 除了可以做桌面UI,还可以用于 xml、网络、多线程、数据库、定位、多媒体、web 浏览器。
为什么 PyQt 稳定性高:
安装 PyQt5:
若全局安装:
(1) PyQt5安装 pip install PyQt5 -i https://pypi.douban.com/simple
(2) 辅助工具安装 pip install PyQt5-tools -i https://pypi.douban.com/simple
若虚拟环境安装:(推荐)
使用虚拟环境可以避免污染全局环境,且方便整个项目依赖包的管理,分享时给别人发 pipfile 文件,别人参照该文件可快速安装项目依赖包。
(1) 创建虚拟环境:首先在终端 cd 项目路径,可以复制文件上方的路径到 cd 后面,回车进入
然后输入 pipenv --three 借助 python3 的解释器创建项目所需要的虚拟环境
报错:
解决方法:pip install --user --upgrade pipenv
把该安装路径加到环境变量Path里,重启终端即可。
安装路径如上。
好喽!
执行以后该路径下生成名叫 Pipfile 的文件。
接下来激活环境 pipenv shell
打开 Pipfile 发现是官方的源,修改安装源为清华源
修改前:
修改后:
修改好源即可安装第三方库了 pipenv install pyqt5
同理 pipenv install pyqt5-tools
接下来用该虚拟环境解释整个项目的代码,首先把目标文件夹以项目方式在 PyCharm 中打开
打开 【File——Settings——Project——Project Interpreter】,我这儿已经有该解释器了
如果没有找到的话,点击【show all】手动添加
在弹出来的窗口点击加号
选择【Existing environment】,找到虚拟环境下的 python.exe 的路径,把它添加进来
尝试导入包PyQt5,查看是否有问题 **from PyQt5.Qt import ***
没有问题,这样环境就配好了。
大致了解 GUI 库 PyQt5 包含哪些功能,能做什么,每件事情对应哪些模块。
基本程序结构,可以跑通 GUI 程序,看到一个界面,如何展示控件。
各种控件的特性和使用,能够知道每个控件都能解决什么需求,该怎样去使用这个控件。(比如什么用来输入、什么用来点击、什么用作复选框)
控件的样式,怎样能把控件的样式搞的好看一点,比如颜色,边框等等。
资源的加载,怎样加载资源,展示在GUI控件中。(比如图像)
控件的布局,怎样把各个单独的控件摆放的更协调,更美观。
事件和信号,监听各个控件的事件,可以执行相关业务代码。
动画特效,怎样能够在与用户交互的时候,展示炫酷的动画。
界面跳转,从一个窗口,跳转到另外一个窗口。(比如登录跳转)
设计工具使用,通过辅助工具来设计界面。
额外:网络通讯(搭建服务器验证账号)、多线程、数据库、文件操作、绘图、多媒体、定时器、定位
国际化…
官方文档:https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html
常用模块:
QtWidgets,包含了一整套UI元素控件(类),用于建立符合系统风格(Win,Mac)的界面。
QtGui,涵盖了多种基本图形功能的类(字体、图形、图标、颜色…)
QtCore,涵盖了包的核心的非GUI功能(时间、文件、目录、数据类型、文本流、链接、线程进程…)
QtWebKit,浏览器引擎。
QtTest,测试。
QtSql,数据库。
QtMultimedia
QtMultimediaWidgets
…
Qt,将基本全部模块中的类综合到一个单一的模块中,好处是不用关心哪个模块包含哪些类了,坏处是占用内存。
代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
# if 判断使得文件作为脚本直接执行才会被执行,而 import 到其他脚本中是不会被执行的
# 当前执行的模块 __name__ == '__main__',被 import 的模块 __name__ == '文件名(不包括 .py)'
if __name__ == '__main__':
# 创建 QApplication 类的实例, sys.argv 实现从程序外部向程序传递参数
app = QApplication(sys.argv)
# 创建一个窗口,窗口有两大属性——尺寸和坐标
w = QWidget()
w.resize(400, 200)
# 移动窗口即修改窗口的左上角坐标
w.move(300, 300)
# 设置窗口的标题
w.setWindowTitle('开始学Qt啦!')
# 显示窗口
w.show()
# 进入主循环,主循环是 GUI 的工作机制,它会响应窗口上的事件且让整个程序不会退出
# 通过 exit 函数确保主循环安全结束(该释放资源时就释放)
sys.exit(app.exec_())
教程学习自网络,笔记记录自用。
用到的博客:
【报错:‘PIPENV‘ 不是内部或外部命令,也不是可运行的程序或批处理文件】解决办法:https://www.freesion.com/article/7489978195/
作话:白天又浪费时间了,本来打算每天一篇博客,为了坚持下去,只能选择晚上加班,但还是没在十二点前写完。希望明天,不,今天,能高效起来。Fighting!