2 - PyQt5的介绍

2 - PyQt5的介绍

1、什么是 GUI 编程

GUI:Graphical User Interface,又称图形化用户接口(接口:对接的入口,在计算机中“接口”常指前端和后端交互的入口,即API)。会有一个图形化的界面展示给用户,与用户交互。用户只需要鼠标点击就可以控制,而不是输入代码指令,接收枯燥的反馈。

而 GUI 编程,就是编写图形化界面的软件供用户使用。

2、与 GUI 编程相关的库

官网由相关介绍:https://wiki.python.org/moin/GuiProgramming

有跨平台的库,也有针对某一平台的库(体验更好)。

官方库:Tkinter

其他常用库:PyQt、PySide、wxPython、PyGUI、Kivy、Libavg

选库标准:

  • 别用最新的版本(有bug,有问题不好查找)
  • 最新更新时间近(有人维护)
  • 简单好用,功能强大(占用内存小)
  • 文档齐全
  • 性能高,稳定性好
  • 生态支持(Qt Designer)
  • 跨平台
  • 开源免费

讨巧的方法:那个人多用哪个,群众的眼睛是雪亮的。

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 的解释器创建项目所需要的虚拟环境

报错:

2 - PyQt5的介绍_第1张图片

解决方法:pip install --user --upgrade pipenv

把该安装路径加到环境变量Path里,重启终端即可。

2 - PyQt5的介绍_第2张图片

安装路径如上。

好喽!

2 - PyQt5的介绍_第3张图片

执行以后该路径下生成名叫 Pipfile 的文件。

接下来激活环境 pipenv shell

2 - PyQt5的介绍_第4张图片

打开 Pipfile 发现是官方的源,修改安装源为清华源

修改前:

2 - PyQt5的介绍_第5张图片

修改后:

2 - PyQt5的介绍_第6张图片

修改好源即可安装第三方库了 pipenv install pyqt5

2 - PyQt5的介绍_第7张图片

同理 pipenv install pyqt5-tools

接下来用该虚拟环境解释整个项目的代码,首先把目标文件夹以项目方式在 PyCharm 中打开

2 - PyQt5的介绍_第8张图片
打开 【File——Settings——Project——Project Interpreter】,我这儿已经有该解释器了

2 - PyQt5的介绍_第9张图片

如果没有找到的话,点击【show all】手动添加

2 - PyQt5的介绍_第10张图片

在弹出来的窗口点击加号

2 - PyQt5的介绍_第11张图片

选择【Existing environment】,找到虚拟环境下的 python.exe 的路径,把它添加进来

2 - PyQt5的介绍_第12张图片

尝试导入包PyQt5,查看是否有问题 **from PyQt5.Qt import ***

2 - PyQt5的介绍_第13张图片

没有问题,这样环境就配好了。

3、GUI 编程应该学什么

  • 大致了解 GUI 库 PyQt5 包含哪些功能,能做什么,每件事情对应哪些模块。

  • 基本程序结构,可以跑通 GUI 程序,看到一个界面,如何展示控件。

  • 各种控件的特性和使用,能够知道每个控件都能解决什么需求,该怎样去使用这个控件。(比如什么用来输入、什么用来点击、什么用作复选框)

  • 控件的样式,怎样能把控件的样式搞的好看一点,比如颜色,边框等等。

  • 资源的加载,怎样加载资源,展示在GUI控件中。(比如图像)

  • 控件的布局,怎样把各个单独的控件摆放的更协调,更美观。

  • 事件和信号,监听各个控件的事件,可以执行相关业务代码。

  • 动画特效,怎样能够在与用户交互的时候,展示炫酷的动画。

  • 界面跳转,从一个窗口,跳转到另外一个窗口。(比如登录跳转)

  • 设计工具使用,通过辅助工具来设计界面。

  • 额外:网络通讯(搭建服务器验证账号)、多线程、数据库、文件操作、绘图、多媒体、定时器、定位
    国际化…

4、PyQt5 库结构

官方文档:https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html

2 - PyQt5的介绍_第14张图片

常用模块:

QtWidgets,包含了一整套UI元素控件(类),用于建立符合系统风格(Win,Mac)的界面。
QtGui,涵盖了多种基本图形功能的类(字体、图形、图标、颜色…)
QtCore,涵盖了包的核心的非GUI功能(时间、文件、目录、数据类型、文本流、链接、线程进程…)
QtWebKit,浏览器引擎。
QtTest,测试。
QtSql,数据库。
QtMultimedia
QtMultimediaWidgets

Qt,将基本全部模块中的类综合到一个单一的模块中,好处是不用关心哪个模块包含哪些类了,坏处是占用内存。

5、初试——用 PyQt5 显示一个窗口

2 - PyQt5的介绍_第15张图片

代码:

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!

你可能感兴趣的:(GUI从零开始,qt,python)