亲宝软件园·资讯

展开

Python模型封装

IntelligentRS 人气:0

一、桌面应用软件

桌面应用软件是基于GUI(Graphical User Interface,图形用户界面)交互式程序,需要实现GUI库实现前端交互。

Python常见的GUI库

程序打包工具:Pyinstaller

下图为Python桌面应用软件开发大体的技术架构。

图1 软件技术架构

二、Pyside2&Qt designer

(1)PySide2——控件

图形界面的工具基础:控件(widget)、信号(signal)与槽(solt),控件表示前端界面可显示/操作/交互的元素,如按钮、输入控件、展示控件等,供用户点击、接受用户输入、展示内容、存放其它控件。

PySide2的安装:

pip install PySide2 -i http://pypi.tuna.tsinghua.edu.cn/simple/

下面为一个PySide2程序的实现流程:

1.定义一个应用

2.定义主窗口

3.定义需要的控件

4.执行应用,进入事件循环

# -*- coding: utf-8 -*-
"""
# @file name  : 01_helloworld.py
# @brief      : 使用pyside编写第一个软件
"""
from PySide2.QtWidgets import QApplication, QMainWindow, QTextBrowser, QLabel
if __name__ == "__main__":
    app = QApplication([])  # UI应用程序管理应用
    # ================================================
    # 1. 定义主窗口
    window = QMainWindow()
    # 2. 定义文本框显示
    label = QLabel(window)
    label.setText("Hello World!")
    # 3. 窗口显示
    window.show()
    # ================================================
    app.exec_()  # 进入QApplication的事件处理循环

图2 PySide2实现第一个GUI界面

(2)PySide2——信号(signal)与槽(slot)

用户对图形界面的控件操作就会产生信号,程序应能接收识别信号,并进行相应的处理。特点信号的处理函数称为槽。

按钮被点击时,向程序发出信号,程序自动执行btn_slot函数。

# -*- coding: utf-8 -*-
"""
# @file name  : 02_signal&slot.py
# @brief      : 了解信号与槽
"""
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit
if __name__ == "__main__":
    app = QApplication([])  # UI应用程序管理应用
    # ================================================
    # first. 定义主窗口
    window = QMainWindow()
    window.resize(500, 400)
    window.move(300, 310)
    # 2. 定义按钮控件
    def btn_slot():
        print("用户点击了按钮,将执行xxx")
    btn = QPushButton("我的按钮", window)
    btn.clicked.connect(btn_slot)
    # 3. 单行文本框
    def text_slot():
        text = text_edit.text()
        print("检测到文本框变动,当前文本框信息为:{}".format(text))
    text_edit = QLineEdit(window)
    text_edit.move(100, 0)
    text_edit.setPlaceholderText('请输入信息...')
    text_edit.textChanged.connect(text_slot)
    # 窗口显示
    window.show()
    # ================================================
    app.exec_()  # 进入QApplication的事件处理循环

图3PySide2实现第二个GUI界面

(3)常用控件

1.按钮:btn = QPushButton(“我的按钮”,window)

2.单行文本框:text_edit = LineEdit(window)

3.标签显示:label = QLabel(window)

4.文件选择:path_file,filetype = QFileDialog.getOpenFileName(window,"选取文件","./","All File(*);;Text Files(*.jpg)")

(4)Qt Designer

Qt Designer可以通过拖曳的方式完成复杂的界面设计,完成控件设计。Qt Designer生成的UI界面是一个后缀为.ui的文件,其实是一个XML文件。通过使用pyuic5命令将.ui文件转换成.py文件,然后将.py文件引入到自定义的Python代码中。主要分为以下四步:

图4 Qt Designer设计流程

三、模型封装部署

封装--面向对象三大特性之一,面向对象(Object Oriented Programming)的三大特性如下:

类的设计三要素:

图5封装模型的过程

四、Pyinstaller

Pyinstaller是一个用来将Python程序打包成一个独立可执行软件包,支持Windows、Linux和Mac OS,Pyinstaller可以读取您编写的Python脚本。

Pyinstaller分析代码执行所需的所有模块,然后将这些文件的副本和Python解释器一起放在单个文件夹中,或者在单个可执行文件中。

Pyinstaller的安装:

pip install pyinstaller -i http://pypi.tuna.tsinghua.edu.cn/simple/

软件打包执行命令:pyinstaller xxx.py,完成后到root/dist/xxx下,找到xxx.exe

pyinstaller main.py --noconsole -F -p D:\course_study\CV_Item\self\img_cls

更新spec文件命令:

pyinstaller -F --onefile main.spec

常用参数:

-F,-onefile产生单个的可执行文件

-p,设置python导入模块的路径(和设置pythonpath环境变量的作用相似)

--noconsole软件启动时不显示命令窗

五、总结

加载全部内容

相关教程
猜你喜欢
用户评论