PyQt5踩坑篇

PyQt5系列教程(一)

目录

  • PyQt5系列教程(一)
  • 前言
      • 软硬件环境:
  • 一、安装PyQt5
  • 二、配置PyCharm
    • 1.添加QtDesigner
    • 2.添加Pyuic
    • 3.添加PYrcc
  • 三、PyQt5简单入门案例
  • 总结

前言

主要记录PyQt的踩坑之路,本文主要介绍利用工具QtDesigner来完成UI界面的设技

软硬件环境:

  • windows 10 64bit
  • Miniconda with Python 3.7.1
  • PyQt5
  • PyCharm 2018.3

PS:最新的也适用,差别不大

一、安装PyQt5

我们使用pip来安装

pip install pyqt5 pyqt5-tools

pyqt5-tools包含了我们以后要使用的几个工具designerpyuci等,同样的,我们也来验证下安装是否成功。在命令行中执行项目的命令

python -c "import PyQt5" 

如果没有报错,那就说明安装好了.报错的话删了重装,参考

pip uninstall pyqt5 pyqt5-tools

二、配置PyCharm

1.添加QtDesigner

  • 先找到designer.exe文件(anaconda)

    我的designer在 C:\Users\18049\anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\bin下,由于用的是虚拟环境,这里记得编译的时候选择自己的虚拟环境.(不知道pycharm怎么选择虚拟环境的百度找一下)

PyQt5踩坑篇_第1张图片

  • 文件路径
$FileDir$
  • 如图:

    PyQt5踩坑篇_第2张图片

配置好后,就可以从Tools --> External Tools启动了

2.添加Pyuic

  • 先找到Python.exe(anaconda)
    PyQt5踩坑篇_第3张图片

  • 设置文件转换命令

-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
  • 设置工作路径
$FileDir$
  • 如图:

    PyQt5踩坑篇_第4张图片

3.添加PYrcc

  • 先找到Pyrcc.exe(anaconda)
    PyQt5踩坑篇_第5张图片

  • 设置文件转换命令

$FileName$ -o $FileNameWithoutExtension$_rc.py
  • 设置工作路径
$FileDir$
  • 如图:

    PyQt5踩坑篇_第6张图片

三、PyQt5简单入门案例

  • 1.打开QtDesigner
    PyQt5踩坑篇_第7张图片

  • 就可以从Tools --> External Tools启动了,打开后点开文件 --> 新建
    PyQt5踩坑篇_第8张图片

  • 更改标题
    PyQt5踩坑篇_第9张图片

  • 效果如图
    PyQt5踩坑篇_第10张图片

  • 保存到随意一个新建文件夹,用Pycharm打开文件夹
    PyQt5踩坑篇_第11张图片

  • 生成的代码如下:

    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(292, 235)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 292, 22))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "hallow world"))
    
  • 添加编译python环境(这里用的虚拟环境)
    PyQt5踩坑篇_第12张图片

  • 添加主题窗口显示代码:

    
    import sys
    from PyQt5.QtWidgets import QApplication , QMainWindow
    
        '''
        生成的代码
        '''
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            # 定制widget的大小
            MainWindow.resize(292, 235)
            # 屏幕中间显示窗口
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 292, 22))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            # 设置窗口名称
            MainWindow.setWindowTitle(_translate("MainWindow", "hallow world"))
            
    if __name__ == '__main__':
        '''
        主函数
        '''
         # 创建app对象
        app = QApplication(sys.argv)
        mainWindow = QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(mainWindow)
        # 显示widget
        mainWindow.show()
        # 进入事件循环
        sys.exit(app.exec_())
    
  • 显示效果如下图:
    PyQt5踩坑篇_第13张图片

    总结

    首先是导入相应的包,我们用到了QApplicationQWidget。需要注意的是,每一个PyQt5应用程序都必须创建一个QApplication对象,接下来创建一个widget,我们没有给它传参数,然后给它设置大小resize,然后通过show方法将widget显示出来,最后进入应用的主循环,循环接收来自窗口系统的事件并将事件dispatch(分发)到各个widget中去。退出循环需要调用exit()方法,sys.exit方法会在应用退出后进行垃圾回收。

你可能感兴趣的:(python,pyqt5)