pyCharm+qtDesigner+pyinstaller 生成exe窗体GUI程序

Python下的图形界面GUI工具繁多,主要用PyQT来入手,其余还有内置的Tkinter,用这货要想设计稍微复杂点的界面简直太累了,而PyQT就是拖动图标

PyQT功能非常强大,可以用PyQt5做出漂亮的界面;另外它支持可视化界面设计,对新手非常友好。就是你可以通过拖动一些模块就可以完成一些代码才能完成的工作,就跟C++的QT是一样的。

1. 安装GUI库

首先需要安装模块PyQt5

pip install pyqt5

PyQt5不再提供QtDesigner等工具,需要再安装模块pyqt5-tools

pip install pyqt5-tools

这里提一下,使用pycharm一样可以安装三方库,在

pyCharm, Setting, Project, Python Interpreter, 中 + 新库,与pip的操作是一样的,但是其安装的库的目录与pip是不同的

Python Interpreter解释器,下图安装在pyCharm创建的工程目录下,venv/Lib/site-package,或者venv/Scripts

而pip命令安装的是在python的安装目录下,site-package

新建项目后,解释器默认选择该项目下的,可以改变路径使其恢复

2. 在Pycharm中配置PyQt5的开发环境

需要在Pycharm中配置PyQt5的开发环境,采用的是添加外部工具的方法来实现,需要添加两个外部工具,

        一个是QtDesinger,用于界面设计

        另一个是PyUIC,用于编译UI文件编程py文件

打开Pycharm,File,Settings,Tools,External Tools,点击 + 号,按照如下设置外部工具:

需要填写的说明:

Name:QtDesinger

Program:C:\Program Files\Python36\Lib\site-packages\PyQt5-tools\designer\designer.exe,这货在不同的版本,路径不同,如果是使用pyCharm安装的,那就存在于venv下,在通过文件查找找到其designer.exe精准目录,填进来

Working directory:$ProjectFileDir$

意思是该外部工具定义名称为QtDesinger,Working directory设置为当前项目工作目录即可,即创建的UI文件会存储在目录下。

Name:PyUIC

Program:C:\Program Files\Python36\Scripts\python.exe

Arguments:$FileName$ -o $FileNameWithoutExtension$.py

Working directory:$ProjectFileDir$

意思是该外部工具定义名称为PyUIC,Arguments的意思是会把UI文件转成同名的py文件,最后的Working directory设置为当前项目工作目录。


配置完成后,在Pycharm的Tools,External Tools,可以看到刚才配置工具名称,配置工具的目的是方便使用

3. Qt Designer基本控件介绍

主界面不同区域介绍:

工具箱 区域:提供GUI界面开发使用的各种基本控件,如单选框、文本框等。可以拖动到新创建的主程序界面。

主界面区域:用户放置各种从工具箱拖过来的各种控件。模板选项中最常用的就是Widget(通用窗口)和MainWindow(主窗口)。二者区别主要是Widget窗口不包含菜单栏、工具栏等。可以分别创建对比看看。

对象查看器 区域:查看主窗口放置的对象列表。

属性编辑器 区域: 提供对窗口、控件、布局的属性编辑功能。比如修改控件的显示文本、对象名、大小等。

信号/槽编辑器 区域:编辑控件的信号和槽函数,也可以添加自定义的信号和槽函数。

显示控件。

         Lable:文本标签,显示文本,可以用来标记控件。

         Text Browser:显示文本控件。用于后台命令执行结果显示。

输入控件,提供与用户输入交互

         Line Edit:单行文本框,输入单行字符串。控件对象常用函数为Text() 返回文本框内容,用于获取输入。setText() 用于设置文本框显示。

         Text Edit:多行文本框,输入多行字符串。控件 对象常用函数同Line Edit控件。

         Combo Box:下拉框列表。用于输入指定枚举值。

控件按钮,供用户选择与执行 

         Push Button:命令按钮。常见的确认、取消、关闭等按钮就是这个控件。clicked信号一定要记住。clicked信号就是指鼠标左键按下然后释放时会发送信号,从而触发相应操作。

         Radio Button:单选框按钮。

         Check Box:多选框按钮。


了解基本控件及作用和获取输入/显示方法后,就可以开始动手实现小需求了。。比如登录界面。获取用户名和密码并显示。 打开Qt Designer,开始拖拽控件实现吧。。

Step1:打开主界面,选择Widget模板

Step2:从Widget Box工具箱中拖拽2个label、2个line Edit、2个Push Button以及1个Text Browser。拖完后如下:

Step3:双击各个控件,修改控件名称(对应属性编辑区中的text,可直接双击控件修改)以及对象名称(对应属性编辑区中的objectName)。对象名称一定记得修改。默认生成的label_1、label_2这种名称无法直接判断到底是对应哪个控件

Step4:点击File -Save保存实现结果。保存文件名为login.ui。

使用刚刚创建的工具,右键选择login.ui,外部工具Externel Tools中使用Pyuic,不出意外,我们会发现项目根目录多了一个和UI同名的py文件,但是这个文件并不能直接执行

4. 调用GUI

为了后续维护方便,采用界面与业务逻辑相分离来实现。也就是通过创建主程序调用界面文件方式实现。

这有2个好处。第1就是实现逻辑清晰。第2就是后续如果界面或者逻辑需要变更,好维护。新建call_login.py文件程序,调用login.py文件。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'connect_me.ui'

#

# Created by: PyQt5 UI code generator 5.11.3

#

# WARNING! All changes made in this file will be lost!

#导入程序运行必须模块

import sys

#PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中

from PyQt5.QtWidgetsimport QApplication, QMainWindow

#导入designer工具生成的login模块

from loginimport Ui_MainWindow

class MyMainForm(QMainWindow, Ui_MainWindow):

def __init__(self, parent=None):

super(MyMainForm,self).__init__(parent)

self.setupUi(self)

# 添加登录按钮信号和槽。注意display函数不加小括号()

        self.pushButton_in.clicked.connect(self.display)

# 添加退出按钮信号和槽。调用close函数

        self.pushButton_out.clicked.connect(self.close)

def display(self):

# 利用line Edit控件对象text()函数获取界面输入

        username =self.lineEdit_username.text()

password =self.lineEdit_password.text()

# 利用text Browser控件对象setText()函数设置界面显示

        self.textBrowser.setText("登录成功!\n" +"用户名是: " + username +",密码是: " + password)

if __name__ =="__main__":

#固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行

    app = QApplication(sys.argv)

#初始化

    myWin = MyMainForm()

#将窗口控件显示在屏幕上

    myWin.show()

#程序运行,sys.exit方法确保程序完整退出。

    sys.exit(app.exec_())


5.用pyinstaller 打包py文件成exe文件

可以为程序添加图标,使用ico文件

生成的文件在dist下面

pyinstaller -F -w --icon="C:\Users\Shawn\Project\HelloWorld\CarIco\Porsche.ico" event.py    -w去控制台窗口的打包成exe

你可能感兴趣的:(pyCharm+qtDesigner+pyinstaller 生成exe窗体GUI程序)