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

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

1、ui界面

在这里插入图片描述

2、ui转py代码

其中uploadimg.py代码如下:

# -*- 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代码如下:

# -*- 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、效果图

在这里插入图片描述

相关推荐

  1. 使用.net core MVC实现图片下载

    2023-12-11 11:22:03       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 11:22:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 11:22:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 11:22:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 11:22:03       18 阅读

热门阅读

  1. synchronized和volatile的区别

    2023-12-11 11:22:03       31 阅读
  2. 基于AidLux的工业视觉少样本缺陷检测实战

    2023-12-11 11:22:03       42 阅读
  3. iOS 防截屏方法(一)

    2023-12-11 11:22:03       41 阅读
  4. React学习笔记

    2023-12-11 11:22:03       36 阅读
  5. 线程组、线程切换、线程异常

    2023-12-11 11:22:03       44 阅读
  6. scheduleatfixedrate详解

    2023-12-11 11:22:03       39 阅读
  7. Presto集群安装部署

    2023-12-11 11:22:03       44 阅读
  8. springboot自定义cron定时任务执行

    2023-12-11 11:22:03       37 阅读