PyQt入门(第一个PyQt应用)

PyQt入门(第一个PyQt应用)

一、PyQt介绍

PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。

PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。

二、python GUI框架简介,pyqt介绍,为什么使用pyqt

python开发GUI程序,了解一个框架需要了解:

(1)运行效果
(2)能够运行在哪些平台
(3)学习成本,因为每一个GUI框架都有自己的特点
(4)开发效率的比较,python的运行效率比c c++低,但是开发效率是比较快的

python GUI框架:

(1)Tkinter: python内置的GUI框架,使用TCL实现,python中内嵌了TCL解释器,使用它的时候不用安装额外的扩展包,直接import,跨平台。不足之处在于UI布局全靠代码实现,只有15种常用部件,显示效果简陋。
(2)Wxpython:用得比较广泛,跨平台,C++编写,需要安装扩展模块;文档少,遇到问题不好解决,代码布局控件,不直观。
(3)Pygtk: python对GTK+GUI库的封装,在linux平台上运行的比较好,需要安装扩展模块,在windows下的兼容性有一些问题。
(4)pyqt:QT原本是诺基亚的产品,源码用C++写的,python对QT的包装,跨平台,本地显示效果,根据系统决定,在win7下就是win7的显示效果;pyqt与qt的函数接口一致,qt开发问的那个丰富,所以pyqt开发文档也比较丰富;控件丰富,函数/方法多,拖曳布局;方便打包成二进制文件;GPL协议,商业程序需要购买商业版授权
(5)pyside:诺基亚的亲儿子,python对QT的封装,安装扩展模块,跨平台,与pyqt的API一样,LGPL协议,新软件可以是私有的,代码布局
(6)Kivy: 针对多点触控程序,智能手机平板等,也可以在没有触屏功能的系统上,全平台支持;使用python和cython(python和c语言的接口)编写;中文支持差,需要自己下载中文库并且制定路径。

为什么使用pyqt:

  1. 因为API与qt一致,学会了pyqt再使用qt很简单
  2. 文档丰富
  3. 学习成本低
  4. 开发迅速,qt designer拖曳布局,如果使用代码布局还需要构建全局并且调试
  5. 学习经验容易迁移到pyside来开发商业应用
  6. 方便打包发布软件,python本身解释语言的特点是写好的程序不编译和链接,使用文本运行解释器,边解释边执行,用户不可能装一个解释器再发源码再执行,所以打包成exe再发布

三、安装与配置

1.安装

安装pyqt5

pip install pyqt5or pip3 install pyqt5

Windows安装PyQt-tools

pip3 install pyqt5-tools

Mac和Linux都不支持PyQt5-tools所以直接安装Qt Designer即可

  • Mac

    pip install Qt

  • Linux

    注:由于我用的Manjaro已经内置了Qt Designer,所以这里写ubuntu下的安装方法

    sudo apt-get install qt5-default qttools5-dev-tools

terminal中查看是否安装成功PyQt

 rex@rex-linux  ~  pip list
Package              Version 
-------------------- --------
appdirs              1.4.3   
btrfsutil            1.1.1   
CacheControl         0.12.5  
chardet              3.0.4   
colorama             0.4.1   
cupshelpers          1.0     
distlib              0.2.9   
distro               1.4.0   
docopt               0.6.2   
html5lib             1.0.1   
idna                 2.8     
Jade-Application-Kit 2.0.7   
keyutils             0.5     
lockfile             0.12.2  
louis                3.10.0  
msgpack              0.6.1   
npyscreen            4.10.5  
numpy                1.16.4  
opencv-python        4.1.0.25
packaging            19.0    
pacman-mirrors       4.14.2  
pep517               0.5.0   
Pillow               6.1.0   
pip                  19.0.3  
progress             1.5     
pwquality            1.4.0   
pycairo              1.18.1  
pycups               1.9.74  
pycurl               7.43.0.2
PyGObject            3.32.2  
pyparsing            2.4.0   
PyQt5                5.13.0  
PyQt5-sip            4.19.18 
pysmbc               1.0.16  
pytoml               0.1.20  
PyYAML               5.1     
reportlab            3.5.23  
requests             2.22.0  
retrying             1.3.3   
setuptools           41.0.1  
six                  1.12.0  
team                 1.0     
udiskie              1.7.7   
urllib3              1.25.3  
webencodings         0.5.1 

如图所示我们已经安装成功了PyQt5

2.配置

若你已经可以在你的应用程序菜单里找到Qt Designer那就可以了

[外链图片转存失败(img-cdK7Yi3o-1563843564530)(https://s2.ax1x.com/2019/07/20/eS1iCT.png)]

PyCharm配置

注:PyCharm安装激活方法自行百度,这里不提供

  • 打开PyCharm
  • File->Setting->Tools->External Tools

[外链图片转存失败(img-TwIbK8xa-1563843564532)(https://s2.ax1x.com/2019/07/20/eS1Uat.png)]

  • 点击加号,依次填入

    Name:Qt Designer
    
    Group:Qt
    
    Program:usr/local/designer
    
    Arguements:$FileName$
    
    Working directory:$ProjectFileDir$
    

[外链图片转存失败(img-4xnGka2t-1563843564534)(https://s2.ax1x.com/2019/07/20/eS1wPf.png)]

  • 再次点击加号输入

    Name:PyUIC
    
    Group:Qt
    
    Program:/usr/bin/python3
    
    Arguements:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
    
    Working directory:$FileDir$
    

[外链图片转存失败(img-mSRNAKyo-1563843564535)(https://s2.ax1x.com/2019/07/20/eS38YV.png)]

  • Ok->Apply

到这里PyCharm的配置基本结束

四、第一个PyQt应用程序

1.UI设计

  • 打开PyCharm新建一个基于venv的python项目

  • 在Setting的Project interpreter中查看是否有PyQt没有的话自行添加

[外链图片转存失败(img-QeaQqMLq-1563843564537)(https://s2.ax1x.com/2019/07/20/eS30T1.png)]

  • 打开Tools->QT->Qt Designer

[外链图片转存失败(img-Y2gwr3fs-1563843564538)(https://s2.ax1x.com/2019/07/20/eS3f0A.jpg)]

  • 新建一个MainWindow ui界面

  • 向上拖拉控件并保存名为firstMainWindow.ui

[外链图片转存失败(img-2JMjRxiL-1563843564543)(https://s2.ax1x.com/2019/07/20/eS3qXQ.png)]

2.ui文件转换为.py文件与代码编写和运行

要想.ui文件可以被我们程序读取有两种方法

  • 使用命令行来将.ui编译为.py文件

    pyuic5 -o firstMainWindow.py firstMainWindow.ui
    

    编译完成后的firstMainWindow.py文件内容

  from PyQt5 import QtCore, QtGui, QtWidgets
  
  
  class Ui_MainWindow(object):
      def setupUi(self, MainWindow):
          MainWindow.setObjectName("MainWindow")
          MainWindow.resize(800, 600)
          self.centralwidget = QtWidgets.QWidget(MainWindow)
          self.centralwidget.setObjectName("centralwidget")
          self.listWidget = QtWidgets.QListWidget(self.centralwidget)
          self.listWidget.setGeometry(QtCore.QRect(140, 60, 531, 371))
          self.listWidget.setObjectName("listWidget")
          MainWindow.setCentralWidget(self.centralwidget)
          self.menubar = QtWidgets.QMenuBar(MainWindow)
          self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 30))
          self.menubar.setObjectName("menubar")
          self.menuFile = QtWidgets.QMenu(self.menubar)
          self.menuFile.setObjectName("menuFile")
          self.menuEdit = QtWidgets.QMenu(self.menubar)
          self.menuEdit.setObjectName("menuEdit")
          MainWindow.setMenuBar(self.menubar)
          self.statusbar = QtWidgets.QStatusBar(MainWindow)
          self.statusbar.setObjectName("statusbar")
          MainWindow.setStatusBar(self.statusbar)
          self.actionNew = QtWidgets.QAction(MainWindow)
          self.actionNew.setObjectName("actionNew")
          self.actionOpen = QtWidgets.QAction(MainWindow)
          self.actionOpen.setObjectName("actionOpen")
          self.menuFile.addAction(self.actionNew)
          self.menuFile.addAction(self.actionOpen)
          self.menubar.addAction(self.menuFile.menuAction())
          self.menubar.addAction(self.menuEdit.menuAction())
  
          self.retranslateUi(MainWindow)
          QtCore.QMetaObject.connectSlotsByName(MainWindow)
  
      def retranslateUi(self, MainWindow):
          _translate = QtCore.QCoreApplication.translate
          MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
          self.menuFile.setTitle(_translate("MainWindow", "File"))
          self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
          self.actionNew.setText(_translate("MainWindow", "New"))
          self.actionOpen.setText(_translate("MainWindow", "Open"))
  
  • 使用代码直接读取.ui文件

    这里我们还是依旧两种方法来读取.ui文件

    1.使用我们编译好的firstMainWindow.py文件

    2.直接读取.ui文件

    • 使用firstMainWindow.py文件

      编写一个叫CallFirstMainWin.py文件,内容如下

    import sys
    from PyQt5.QtWidgets import  QApplication, QMainWindow
    from firstMainWin import *
    class MyMainWindow(QMainWindow, Ui_MainWindow):
    
    
        def __init__(self, parent=None):
            super(MyMainWindow, self).__init__(parent)
            self.setupUi(self)
    
    
    if __name__ == "__main__":
        app=QApplication(sys.argv)
        myWin = MyMainWindow()
        myWin.show()
        sys.exit(app.exec_())

这里我们继承了firstMainWindow.py中的Ui_MainWindow类来使用我们设计的UI

  • 直接读取.ui文件
    import sys
    from PyQt5.QtWidgets import  QApplication, QMainWindow
    from firstMainWin import *
    from PyQt5.uic import loadUi
    
    app = QApplication(sys.argv)
    widget = loadUi('firstMainWin.ui')
    widget.show()
    sys.exit(app.exec_())

这里是直接使用了loadUi方法来读取了ui文件

注意:为了保障界面与逻辑分离我们大部分情况下都使用第一种方法,通过继承界面文件的主窗口类来完成界面和逻辑的分离

两种方式都可以成功运行

End

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!很高兴为您提供关于"pyqt5入门教程pdf下载"的信息。 PyQt5是一个基于Python的GUI图形界面开发工具包,可以帮助开发者快速应用于创建各种应用程序。为了入门学习PyQt5,你可以通过以下几种方法来下载相应的教程PDF: 1. 官方网站下载:您可以直接访问PyQt5官方网站,通常他们会提供一份详细的教程手册供下载。您可以找到一个与您当前使用的PyQt5版本相匹配的PDF版本,并从他们的网站上直接下载。 2. 在线论坛和社区:除了官方网站,许多PyQt5的活跃用户和爱好者会在在线论坛和社区中分享各种教程和资源。您可以在这些论坛上搜索相关的教程,并从各种链接中下载PDF文件。 3. 第三方网站和博客:有许多第三方网站和博客提供PyQt5的入门教程,其中一些还提供了免费的PDF下载链接。使用搜索引擎,您可以找到许多这样的资源。确保您从可信任的网站下载PDF文件。 请注意,在下载任何资源之前,请务必确认文件的来源和真实性,确保不会下载到恶意软件或病毒。最好使用您信任的网站或官方渠道来获取PyQt5的教程PDF。 希望这些信息对您有所帮助,祝您学习PyQt5的过程顺利!如果还有任何问题,欢迎随时向我提问。 ### 回答2: 在网上可以找到许多关于PyQt5入门教程的PDF下载资源。PyQt是一个用于开发桌面应用程序的库,而PyQt5是其最新的版本。学习PyQt5可以帮助我们快速开发跨平台的图形界面应用程序。 要下载PyQt5入门教程的PDF,首先你可以在搜索引擎中输入关键词"PyQt5入门教程PDF下载",然后点击搜索。在搜索结果中,你可能会看到一些网站或论坛提供相关资源的链接。 一些常用的学习资源网站,比如CSDN、博客园、GitHub等,通常会有用户分享的PyQt5入门教程PDF下载。你可以通过在这些网站上进行搜索来找到合适的资源。 此外,也有一些开发者和博主会将他们的博客或个人网站上的教程整理成PDF并提供下载。找到这些来源后,你可以点击下载链接,然后将PDF保存到本地进行阅读或打印。 需要注意的是,下载该PDF教程之前要确保资源的合法性和可靠性,以免下载到恶意软件或损坏的文件。可以选择一些有信誉和口碑良好的网站来获取资源。 希望这些信息能帮助你找到合适的PyQt5入门教程PDF下载资源。祝你学习顺利,快速掌握PyQt5的开发技巧!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值