简介

咱们好,咱们的gzh是朝阳三只大明白,满满全是干货,分享近期的学习常识以及个人总结(包括读研和IT),跪求一波重视,期望和咱们一同努力、进步!!

写在最前面的话

在决议学习、运用一个结构之前需求考量如下几点:

  1. 结构运转效果;
  2. 结构应用规模;
  3. 结构学习本钱和搬迁本钱;
  4. 实现自己所需功用的开发功率;

只有归纳考量如上四个方面,才干更好地选择合适自己的结构;

Python GUI 结构介绍

TK

Tkinter 是 Python 内置的 GUI 结构,创立 Tkinter 的目的是为了给现代开发人员提供 Tk GUI 东西包的标准接口和它的 Python 绑定,它唯一的长处便是简略无依赖,TK 的入门门槛很低,但是通晓难度大,它最大的问题是布局,不同于 PyQt 的布局管理器,TK 的布局彻底运用代码实现,就开发功率而言较低,且它只提供 15 种控件,扩展性差。

PyQt

这个结构是自己首推的 Python GUI 结构,PyQt 是 Qt 结构的 Python 版别,Qt 本身是一个非常老练的商业 GUI 结构,底层运用 C++进行开发。PyQt 是 Python 对 Qt 的包装,具有扩展性强、跨渠道、显现效果好的长处,其次 PyQt 的接口和 Qt 的彻底一致,所以采用 PyQt 开发 GUI 后期能够转 C++开发 Qt。需求留意的是,PyQt 有两种答应协议,分别是 GPLv3答应证和需求购买版权的商业答应证,GPLv3是强开源协议,意味着,假如你的应用程序里面运用了 PyQt,那么你的程序必须开源,不然法院传票了解一下,因而假如想要闭源商用,必须购买 Riverbank Computing 公司的商业答应证,现在 PyQt 现已推出了 PyQt 6,在 PyQt 5 的基础上对部分模块进行了升级,并增加一些新功用。

PySide 2

假如你既想享受 Qt 的强大功用,又想闭源商用,那么 PySide 彻底合适你,说到 PySide,就不得不说,Qt 与 PyQt 之间的恩怨,Qt 的研发公司是 Nokia,Riverbank Computing 公司运用 Python 封装了 Qt 研发出 PyQt,而 PyQt 从诞生时便是 GPLv3协议,因而 Nokia 与 Riverbank Computing 谈判,期望将 PyQt 的协议修正为 LGPLv3,能够带来更多的商业用户,但是两个公司谈崩了,所以 Nokia 自己重新研发了 Py 版别的 Qt 也便是 PySide,后来 Nokia 将 Qt 和 PySide 卖给了 Digia 公司,后来在 Digia 公司与开源社区的支持下,现在 Pyside 现已迭代到 PySide6了,对应 PyQt6,留意 PyQt5的对应版别是 PySide2,由于 PySide 推出的比较晚,因而第二代 Pyside 就对齐了 PySide6。对于 Pyside6,由于是官方推出的,而且能够闭源商用。二者的函数接口彻底一致,所以文档根本也是能够相互参阅,因而仍是比较强推 PySide6的。

WxPython

WxPython 是一个流行的跨渠道 GUI 东西包。由 Robin Dunn 和 Harri Pasanen 共同开发,它的实质是 wxWidgets(运用 C++编写) 的 Python 包装。相比于 PyQt 模块,WxPython 模块的文档较少,功用相对较弱。

Pygtk

python 对 GTK+GUI 库的封装,在 linux 渠道上运转的比较好,需求安装扩展模块,在 windows 下的兼容性有一些问题。

PyQt

引荐 PyQt 的原因

  1. 文档丰富;
  2. 学习本钱低,后期搬迁本钱低;
  3. 开发功率高,开发人员能够运用 Qt-designer 进行拖拽布局;
  4. 开发经历能够搬迁到 pyside 进行商业软件开发;

环境建立

根本环境

  • Windows 11,64 位;
  • Python 3.8.6;

安装 PyQt

直接运用 pip 进行安装,参阅文档

pip install PyQt5
pip install pyqt5-tools

假如下载速度过慢能够运用国内镜像

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

Pycharm 环境装备

Qt Designer 是用于设计和构建图形用户界面的 Qt 东西。它允许运用屏幕上的表单和简略的拖放界面设计控件、对话框或完好的窗口。Qt Designer 运用 XML 格式的 .ui 文件贮存 GUI 界面文件,本身不会生成任何代码,.ui 文件能够经过pyuic东西转换为 .py 文件。

这里稍微扩展一下,Qt 结构本身包括 uic utility 能够从 .ui 文件生成 C++代码。其次 Qt 结构还包括 QUiLoader 类,该类能够在应用程序中动态加载 .ui 文件。PyQt 5 只包括了 uic Python 模块,能够动态加载 .ui 文件,也能够将 .ui 文件转换为 .py 文件,pyuic东西实质上是 uic Python 模块的接口,命令格式如下:

pyuic [options] <uifile>

常用选项如下:

  • -p:动态创立并显现 GUI,不会生成 Python 代码;
  • -o <filename>:生成的 Python 代码将输出到指定文件;
  • --version:输出版别号;
  • -i <N>:指定代码缩进格数;
  • -h:将帮助信息输出;

PyQt 5 支持 Qt 的资源系统,用于将来源嵌入到应用程序中,方便分发和打包资源,.qrc 文件是一个资源调集,运用 XML 文件描绘存储的资源,用于指定需求被嵌入到应用程序中的资源文件。应用程序会以冒号作为开头,经过资源文件的原始称号引用相应的文件。

为了将 .qrc 文件转换成 .py 文件,需求运用pyrcc 5东西,该东西和 pyuic 东西是一致的,pyrcc5 会读取 .qrc 文件和资源文件,并生成相应的 Python 模块。只需求在应用程序中 import 相应的 Python 资源模块,便能够像运用原始文件一样,运用相应的资源。

综上,为了装备 Pycharm 环境,咱们需求装备 3 样东西:

  1. Qt Designer;
  2. Pyuic;
  3. Pyrcc;

Qt Designer

在 Pycharm 中,依次翻开 File → Settings → Tools → External Tools,点击 + Create Tool,装备如下:

Name:QtDesigner
Program:D:Python38\Lib\site-packages\PySide2\designer.exe(请依据实践修正)
Working directory: $FileDir$

【PyQt】PyQt学习(一)框架介绍+环境搭建

Pyuic

在 Pycharm 中,依次翻开 File → Settings → Tools → External Tools,点击 + Create Tool,装备如下:

Name: Pyuic
Program: D:\Program Files\Python38\python.exe(请依据实践修正)
Arguments: -m PyQt5.uic.pyuic $FileName$ -o Ui_$FileNameWithoutExtension$.py
Working directory: $FileDir$

【PyQt】PyQt学习(一)框架介绍+环境搭建

Pyrcc

在 Pycharm 中,依次翻开 File → Settings → Tools → External Tools,点击 + Create Tool,装备如下:

Name: PyRCC
Program : D:\Python38\Scripts\pyrcc5.exe(请依据实践修正)
Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory: $FileDir$

【PyQt】PyQt学习(一)框架介绍+环境搭建

第一个程序

在 Pycharm 中翻开 Qt-Designer。

【PyQt】PyQt学习(一)框架介绍+环境搭建

在左侧控件栏中搜索 Label 控件,将控件拖拽到窗口中间,并更改其间的文字为 hello world,PyQt5。保存文件为 demo 1_helloworld。

【PyQt】PyQt学习(一)框架介绍+环境搭建

运用pyuic东西将 .ui 文件转换成 .py 文件,输入以下代码:

import sys
from PyQt5.QtWidgets import *  
from UI.Ui_demo1_helloworld import Ui_MainWindow  
# 承继基类和自己写的UI类  
class MainWindow(QMainWindow, Ui_MainWindow):  
    def __init__(self):  
        super(MainWindow, self).__init__()  
        self.setupUi(self)  
if __name__ == '__main__':  
    app = QApplication(sys.argv)  # 创立APP  
    win = MainWindow()  # 创立主窗口  
    win.show()  # 显现窗口  
    sys.exit(app.exec())  # 程序运转

运转程序,成果如下:

【PyQt】PyQt学习(一)框架介绍+环境搭建

至此,咱们迈出了第一步,完成了第一个 PyQt 程序!!!

文中难免会出现一些描绘不当之处(尽管我已重复检查屡次),欢迎在留言区指正,相关的常识点也可进行分享,期望咱们都能有所收成!!