pyqt5:GUI界面搭建及含图片一起打包成一个.exe(windows环境下)

UI界面搭建

有两种方式:

  • 我们可以通过直接用代码编程直接构建gui界面,缺点是不够直观便捷,较复杂。
  • 通过QtDesigner用鼠标拖拽的方式,能够非常快捷直观高效的搭建界面。

用代码编写界面

示例:
参考链接

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

In this example, we position two push
buttons in the bottom-right corner 
of the window. 

Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, 
    QHBoxLayout, QVBoxLayout, QApplication)

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        okButton = QPushButton("OK")
        cancelButton = QPushButton("Cancel")

        hbox = QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(okButton)
        hbox.addWidget(cancelButton)

        vbox = QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)

        self.setLayout(vbox)    

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('Buttons')    
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这里插入图片描述

用QtDesigner

建议安装anaconda这个工具,以及IDE: pycharm可以像如下图配置QtDesigner,在主界面的Tools -> External Tools里可以直接启动QtDesigner(有个小问题,因为我的系统里有安装QT,所以不能确定安装anaconda就包含QtDesigner还是需要另外安装Qt,大家可以尝试只安装anaconda是否能找到/Anaconda3/Library/bin/designer.exe,如果不能就需要装QT)在这里插入图片描述 在这里插入图片描述

*.ui文件生成py文件

  • 在目录下会生成mainwindow.ui,我们通过命令可以将ui文件生成*.py文件,在主程序中调用;也可以直接在主程序中调用*.ui文件(但这种方式,在打包好之后,需要在exe文件同级目录下要放入*.ui文件才能运行,不太符合我们的期望)。
pyuic5 -o main_ui.py mainwindow.ui
  • 在主程序中调用这个main_ui.py。方式有很多中,这里采用继承的方式。参考链接

界面中包含图片

  • 这里我用到很多初始化图片,在打包的时候,希望也能打包到exe文件中,可以这样操作。
    通过代码将图像编码为二进制文件,可以在打包的时候直接打包到主程序中。(如果不按照下面的方式操作,最终打包的exe文件是不会把图片打包进去的)

新建img.qrc文件,内容如下。

<RCC>
    <qresource prefix="/">
        <file>img/bev_img.png</file>
        <file>img/bev_label.png</file>>
        <file>img/icon.bmp</file>>
        <file>img/label_finish.png</file>>
        <file>img/img.jpg</file>>
    </qresource>
</RCC>
  • 用pyrcc5将img.qrc文件编码为*.py,用于在主程序中调用。
pyrcc5 -o img.py img.qrc

img.py文件内容如下:

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

# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.7)
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore

qt_resource_data = b"\
\x00\x05\xf6\xa3\
\x00\
\x1a\xab\x1a\x78\x9c\xec\x9d\x07\xb8\x15\xc5\xf9\xc6\x0f\xd6\x04\
\x63\xc5\x1e\x2b\xb1\x46\x8d\x35\xb6\xd8\x0d\x76\x8d\x0d\x63\x89\
\x89\x89\x25\x96\xd8\x5b\xd4\xa0\x44\x7a\xef\x17\x2e\xbd\x48\x07\
\x51\xb1\xf7\x02\x4a\xef\x28\x22\x82\x14\x45\x44\xa4\x57\x81\xf3\
\x7f\xdd\x37\x67\xfe\x73\x67\x77\x67\x67\x67\x67\xf7\x9c\x8b\xf7\
\x7d\x1e\x7d\x2e\x7b\x76\xca\x4e\xfb\x7e\xfb\x4d\xd9\xf3\x2e\xdf\

主程序编写

在主程序中直接import这个py,及导入main_ui.py中的Ui_LaneMarkTool,图像输入路径类似’:/img/icon.bmp’,这个冒号是必须的?我是参考网上的,我也不确定。

from ui import Ui_LaneMarkTool
import img


class MainFrame(QMainWindow, Ui_LaneMarkTool):
    def __init__(self):
        super(MainFrame, self).__init__()
        # uic.loadUi('mainwindow.ui', self)
        # self.show()
        self.setupUi(self)
        # self.setCentralWidget(self.Form)
        self.setWindowIcon(QIcon(':/img/icon.bmp'))
        self.labelBEVImage.setPixmap(QPixmap(':/img/bev_img.png'))
        self.labelBEVImage.setScaledContents(True)
        self.labelBEVLabel.setPixmap(QPixmap(':/img/bev_label.png'))
        self.labelBEVLabel.setScaledContents(True)
        self.labelBEVLabelFinished.setPixmap(QPixmap(':/img/label_finish.png'))
        self.labelBEVLabelFinished.setScaledContents(True)
        self.labelFrontImage.setPixmap(QPixmap(':/img/img.jpg'))
        self.labelFrontImage.setScaledContents(True)


if __name__ == "__main__" :
    app = QApplication(sys.argv) 
    main_frame = MainFrame()
    main_frame.show()
    sys.exit(app.exec_())

pyinstaller打包程序

可以用anaconda创建一个新的虚拟环境,只安装需要用到的包,然后在打包,据说这样打包的exe文件会比较小,比较干净。

pip install pyinstaller
pyinstaller -F -w -i icon.ico LaneMarkTool.py
# 这里图标可以直接在线生成一个

在线生成icon链接

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
鉴于引用内容中提到了使用PyQt5来设计GUI界面,我可以推断你正在讨论关于PyQt5图片识别GUI界面的问题。对于这个问题,你可以使用PyQt5和其他相关模块来创建一个交互式的界面,用于图片的识别和处理。 首先,你需要安装PyQt5和其他依赖模块,如mysql等。你可以使用pip命令来安装这些模块,例如"pip install PyQt5"。值得注意的是,有时候安装PyQt5后可能无法找到Qt Designer的应用程序,你可以尝试使用PyQt5运行环境合集来解决这个问题。 接下来,你可以使用Qt Designer来设计界面并将其保存为.ui文件。然后,你需要将.ui文件转换为.py文件,可以使用pyuic5命令来实现,例如"pyuic5 -o XX.py XX.ui"。 在代码中,你可以使用QPixmap方法来导入并显示图片。你可以创建按钮连接到对应的功能,比如打开文件,清除图像,返回等操作。 总之,通过使用PyQt5和其他相关模块,你可以创建一个功能强大的图片识别GUI界面。你可以使用Qt Designer来设计界面,使用QPixmap方法来显示图片,使用按钮来实现各种功能。希望这个回答对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PyQt5多个GUI界面设计](https://blog.csdn.net/sc2079/article/details/90454379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ywfwyht

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值