IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python模型封装部署 -> 正文阅读

[Python知识库]Python模型封装部署

一、桌面应用软件

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

? ? ?Python常见的GUI库

  1. TKinter:基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少;
  2. wxPython:基于wxWidgets的Python库,优点是控件比较丰富、缺点是稳定性相对差点、文档少、用户少;
  3. pyQT5,Pyside2:基于Qt的Python库,优点是控件比较丰富、跨平台体验好、文档完善、用户多、缺点是库比较大,发布出来的程序比较大;
  4. Qt Designer:Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架;
  5. PyQT5:"Riverbank Computing"公司早期的python GUI开发工具库,是QT与Python的结合,但并非Qt公司出品,属于“义子”;
  6. Pyside2:2018年7月,Qt公推出的工具库,它提供了对Qt5.12+完整框架的访问,简单点来说就是在Python下使用Qt,即Qt的“亲儿子”;使用上PyQt5与PySide2差别很小,接口调用几乎一模一样。

? ? ?程序打包工具:Pyinstaller

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

?图1 软件技术架构

二、Pyside2&Qt designer

????????(1)PySide2——控件

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

????????PySide2的安装:

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

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

? ? ? ? 1.定义一个应用

? ? ? ? 2.定义主窗口

? ? ? ? 3.定义需要的控件

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

# -*- coding: utf-8 -*-
"""
# @file name  : 01_helloworld.py
# @author     : xiaofeng
# @date       : 2022-07-29
# @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
# @author     : xiaofeng
# @date       : 2022-07-30
# @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的事件处理循环

??图3?PySide2实现第二个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代码中。主要分为以下四步:

  1. 安装:随着pyside2安装时,自动安装
  2. 启动:Python安装目录下Scripts\pyside2-designer.exe
  3. 转换:pyside2-uic xxx.ui > xxx.py
  4. 使用:在QMainWindow中初始化xxx.py中的控件,然后定义槽函数

图4 Qt Designer设计流程

三、模型封装部署

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

  1. 封装(Encapsulation):隐藏对象的属性和实现细节,仅对外提供公共访问方式;
  2. 继承(Inheritance):使用已存在的类定义作为基础建立新类的方法;
  3. 多态(Polymorphism):“多种状态”,接口的多种不同的实现方式即为多态;

? ? ? ? 类的设计三要素:

  1. 类名:这类事物的名字;
  2. 属性:这类事物具有什么样的特征;
  3. 方法:这类事物具有什么样的行为;

图5?封装模型的过程?

  1. 类名:Predictor;
  2. 属性:model,path_ckpt,device,transform;
  3. 方法:preprocess,inference,get_model,get_transform;

四、Pyinstaller

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

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

?????????Pyinstaller的安装:

pip install pyinstaller -i https://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软件启动时不显示命令窗

五、总结

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:00:11  更:2022-08-19 19:01:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:51:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码