pyqt5使用Designer实现按钮上传图片

pyqt5使用Designer实现按钮上传图片

1、ui界面

2、ui转py代码

其中uploadimg.py代码如下:

python 复制代码
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'uploadimg.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.img_show = QtWidgets.QLabel(self.centralwidget)
        self.img_show.setGeometry(QtCore.QRect(41, 50, 711, 351))
        self.img_show.setObjectName("img_show")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(30, 10, 72, 15))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(50, 430, 41, 31))
        self.label_3.setObjectName("label_3")
        self.img_path = QtWidgets.QLineEdit(self.centralwidget)
        self.img_path.setGeometry(QtCore.QRect(100, 430, 371, 31))
        self.img_path.setObjectName("img_path")
        self.btn_upload = QtWidgets.QPushButton(self.centralwidget)
        self.btn_upload.setGeometry(QtCore.QRect(480, 430, 93, 28))
        self.btn_upload.setObjectName("btn_upload")
        self.img_list = QtWidgets.QComboBox(self.centralwidget)
        self.img_list.setGeometry(QtCore.QRect(100, 480, 371, 31))
        self.img_list.setObjectName("img_list")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(30, 480, 61, 31))
        self.label_4.setObjectName("label_4")
        self.btn_sure = QtWidgets.QPushButton(self.centralwidget)
        self.btn_sure.setGeometry(QtCore.QRect(480, 480, 93, 28))
        self.btn_sure.setObjectName("btn_sure")
        self.btn_next = QtWidgets.QPushButton(self.centralwidget)
        self.btn_next.setGeometry(QtCore.QRect(590, 480, 93, 28))
        self.btn_next.setObjectName("btn_next")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 27))
        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", "MainWindow"))
        self.img_show.setText(_translate("MainWindow", "图片"))
        self.label_2.setText(_translate("MainWindow", "图片"))
        self.label_3.setText(_translate("MainWindow", "路径"))
        self.btn_upload.setText(_translate("MainWindow", "加载"))
        self.label_4.setText(_translate("MainWindow", "图片列表"))
        self.btn_sure.setText(_translate("MainWindow", "确定"))
        self.btn_next.setText(_translate("MainWindow", "下一张"))

3、upload_main.py主函数代码

upload_main.py代码如下:

python 复制代码
# -*- coding: utf-8 -*-

"""
@contact: 微信 1257309054
@file: upload_main.py
@time: 2023/12/10 11:48
@author: LDC
"""
import os
import sys

from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMainWindow, QApplication

from upload_img.uploadimg import Ui_MainWindow


class Window(QMainWindow, Ui_MainWindow):
    def __init__(self, app):
        super(QMainWindow, self).__init__()
        self.app = app
        self.img_len = 0  # 图片列表
        self.setup_ui()  # 渲染画布
        self.connect_signals()  # 绑定触发事件

    def setup_ui(self):
        self.setupUi(self)

    def connect_signals(self):
        # 绑定触发事件
        self.btn_upload.clicked.connect(self.btn_upload_clicked)
        self.btn_sure.clicked.connect(self.btn_sure_clicked)
        self.btn_next.clicked.connect(self.btn_next_clicked)

    def btn_upload_clicked(self):
        # 点击加载按钮
        self.file_path = self.img_path.text()
        img_list = os.listdir(self.file_path)
        self.img_len = len(img_list)
        self.img_list.addItems([img_list[i] for i in range(self.img_len)])

    def btn_sure_clicked(self):
        # 点击确定按钮
        img = self.img_list.currentText()
        pix = QPixmap(self.file_path + "\\" + img)
        self.img_show.setPixmap(pix)
        self.img_show.setScaledContents(True)

    def btn_next_clicked(self):
        # 点击下一张
        if not self.img_len:
            return
        current_next = self.img_list.currentIndex() + 1

        if current_next >= self.img_len:
            current_next = 0
        self.img_list.setCurrentIndex(current_next)
        self.btn_sure_clicked()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywindow = Window(app)
    mywindow.show()
    sys.exit(app.exec_())

4、效果图

相关推荐
神仙别闹4 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
伞伞悦读5 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
2601_966949657 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571768 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
RAN11426760089 小时前
1.3第一个程序的介绍
开发语言·qt
blue_ice .10 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
远翔调光芯片^1382879887210 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
泡海椒11 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
泡泡鱼(敲代码中)11 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
2501_9336707911 小时前
平台招商运营校招能力模型:数据分析、SQL与增长场景拆解
开发语言