pip install PyQt5和pip install PyQt5-tools安装后,找不到designer.exe路径

1.2 GUI与PyQt5

Python是一门脚本语言,它本身并不具备GUI开发功能,但是由于它强大的可扩展性,现在已经有很多种GUI模块库可以在Python中使用,而这其中,PyQt5无疑是最强大、开发效率最高的一种,本节将对GUI及PyQt5进行介绍。

1.2.1 GUI简介

GUI又称图形用户接口或者图形用户界面,它是Graphical User Interface的简称,表示采用图形方式显示的计算机操作用户界面。 GUI是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备对计算机进行操作。比如Windows操作系统就是一种最常见的GUI程序,另外,我们平时使用的QQ、处理表格用的Excel、处理图片用的美图秀秀、观看视频时使用的优酷等,都是GUI程序,如图1.7~图1.10所示。

1.2.2 什么是PyQt5

PyQt是基于Digia公司强大的图形程序框架Qt的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Thompson开发。 自从1998年首次将Qt移植到Python上形成PyQt以来,已经发布了PyQt3、PyQt4和PyQt5等3个主要版本,目前的最新版本是PyQt 5.14。PyQt5的主要特点如下: 

对Qt库进行完全封装。 使用信号/槽机制进行通信。 提供了一整套进行GUI程序开发的窗口控件。 本身拥有超过620个类和近6000个函数及方法。 可以跨平台运行在所有主要操作系统上,包括UNIX、Windows和Ma cOS等。 支持使用Qt的可视化设计器进行图形界面设计,并能够自动生成Python代码。

说明

(1)PyQt5不向下兼容PyQt4,而且官方默认只提供对Python 3.x的支持,如果在Python 2.x上使用PyQt5,需要自行编译,因此建议使用Python 3.8+PyQt5.14开发GUI程序。

(2)PyQt5采用双许可协议,即GPL和商业许可,自由开发者可以选择使用免费的GPL协议版本,而如果准备将PyQt5用于商业,则必须为此交付商业许可费用。

技巧 GPL协议是GNU General Public License的缩写,它是GNU通用公共授权非正式的中文翻译。使用GPL协议,表示软件版权属于开发者本人,软件产品受国际相关版权法的保护,允许其他用户对原作者的软件进行复制或发行,并且可以在更改之后发行自己的软件,但新软件在发布时也必须遵守GPL协议,不可以对其进行其他附加限制。这里需要说明的一点是,使用GPL协议的软件,不能申请软件产品专利,也就不存在“盗版”的说法。

1.2.3 PyQt5与Qt的关系

Qt(中国区官网:https://www.qt.io/cn)是1991年由挪威的Trolltech公司(奇趣科技)开发的一个基于C++的跨平台GUI库,它包括跨平台类库、集成开发工具和跨平台的IDE。 2008年6月,奇趣科技公司被诺基亚公司收购,Qt成为诺基亚旗下的编程语言工具,从2009年5月发布的Qt 4.5版本开始,诺基亚公司内部Qt源代码库开源。 2011年,芬兰的一家IT业务供应商Digia从诺基亚公司手中收购了Qt的商业版权,而到2012年8月,Digia又从诺基亚公司手中全面收购了Qt的软件业务,并于2013年7月3日正式发布Qt 5.1版本,截至2020年3月,Qt的最新版本为5.14。 Qt的发展历程如图1.11所示。 而PyQt(官网:https://www.riverbankcomputing.com/)则是将Python与Qt融为一体,也就是说,PyQt允许使用Python语言调用Qt库中的API,这样做的最大好处就是在保留了Qt高运行效率的同时,大大提高了开发效率。因为,相对于C++语言来说,Python语言的代码量、开发效率都要更高,而且其语法简单、易学。PyQt对Qt做了完整的封装,几乎可以用PyQt做Qt能做的任何事情。 由于目前最新的PyQt版本是5.14,所以习惯上称PyQt为PyQt5。

综上所述,PyQt就是使用Python对Qt进行了封装,而PyQt5则是PyQt的一个版本,它们的关系如图1.12所示。

1.2.4 PyQt5的主要模块

PyQt5中有超过620个类,它们被分布到多个模块,每个模块侧重不同的功能。如图1.13所示为PyQt5模块中的主要类及其作用,在使用PyQt5开发GUI程序时,经常会用到这些类。

图1.13 PyQt5模块中的主要类及其作用

技巧 (1)图1.14中提到QtSvg模块主要提供了可用于显示SVG矢量图形文件的类,那么什么是SVG文件呢?SVG是一种可缩放的矢量图形,它的英文全称为Scalable Vector Graphics,是一种用于描述二维图形和图形应用程序的XML语言。SVG图像非常适合于设计高分辨率的Web图形页面,用户可以直接用代码来描绘图像,也可以用任何文字处理工具打开SVG图像,而且可以通过改变部分代码来使图像具有交互功能,并能够随时插入HTML中通过浏览器来观看。 (2)PyQt5的官方帮助地址为:https://www.riverbankcomputing.com/static/Docs/PyQt5/,这是官方提供的在线英语帮助,如果读者有需要,可以查看。

图1.14 PyQt5的主要模块及作用

1.2.5 其他常用GUI开发库

除了PyQt5之外,Python还支持很多可以开发GUI图形界面程序的库,如Tkinter、Flexx、wxPython、Kivy、PySide、PyGTK等,下面对它们进行简单介绍。 1.Tkinter Tkinter又称“Tk接口”,是一个轻量级的跨平台图形用户界面(GUI)开发工具,是Tk图形用户界面工具包标准的Python接口,可以运行在大多数Unix、Windows和Ma cOS系统中,而且Tkinter是安装Python解释器时自动安装的组件,Python的默认IDLE就是使用Tkinter开发的。 2.Flexx Flexx是用于创建图形用户界面(GUI)的纯Python工具箱,该工具箱使用Web技术进行渲染。作为跨平台的Python工具,用户可以使用Flexx创建桌面应用程序和Web应用程序,同时可以将程序导出到独立的HTML文档中。 作为GitHub推荐的纯Python图形界面开发工具,它的诞生基于网络,已经成为向用户提供应用程序及交互式科学内容越来越流行的方法。 3.wxPython wxPython是Python语言的一套优秀的GUI图形库,可以帮助开发人员轻松创建功能强大的图形用户界面的程序。同时wxPython作为优秀的跨平台GUI库wxWidgets的Python封装,具有非常优秀的跨平台能力,可以在不修改程序的情况下在多种平台上运行,支持Windows、Mac OS及大多数的Unix系统。 4.Kivy Kivy是一款用于跨平台快速应用开发的开源框架,只需编写一套代码便可轻松运行于各大移动平台和桌面上,如Android、iOS、Linux、Ma cOS和Windows等。Kivy采用Python和Cython编写。 5.PySide PySide是跨平台的应用程序框架Qt的Python绑定版本,可以使用Python语言和Qt进行界面开发。2009年8月,PySide首次发布,提供和PyQt类似的功能,并兼容API。但与PyQt不同的是,它使用LGPL授权,允许进行免费的开源软件和私有的商业软件的开发;另外,相对于PyQt,它支持的Qt版本比较老,最高支持到Qt 4.8版本,而且官方已经停止维护该库。 6.PyGTK PyGTK是Python对GTK+GUI库的一系列封装,最经常用于GNOME平台上,虽然也支持Windows系统,但表现不太好,所以,如果在Windows系统上开发Python的GUI程序,不建议使用该库。

第2章 Python的下载与安装

第3章 搭建PyQt5开发环境

安装模块

pip install PyQt5==5.15.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
​
pip install PyQt5-tools==5.15.4.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

测试代码

import sys
from PyQt5 import QtWidgets
 
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(360, 360)
widget.setWindowTitle("hello, pyqt5")
widget.show()
sys.exit(app.exec())

pip install PyQt5和pip install PyQt5-tools安装后,找不到designer.exe路径?

此处作者以采用miniconda的Python开发环境为例。

C:\Users\kw0057194\Miniconda3\Lib\site-packages\qt5_applications\Qt\bin
​
C:\Users\Administrator\miniconda3\envs\python_pd_qt\Lib\site-packages\qt5_applications\Qt\bin

\Lib\site-packages\qt5_applications\Qt\bin

 

posted @ 2021-12-25 20:37  Marlon康  阅读(377)  评论(0编辑  收藏  举报