Pyside2笔记:循环显示图像

使用Label控件动态显示图像。
Pyside2笔记:循环显示图像_第1张图片

使用Qt Designer设计一个简单的界面,添加一个显示控件label,在右侧属性中修改对象名称为LabelDisplayImg。保存为cycle.ui文件。
Pyside2笔记:循环显示图像_第2张图片
利用扩展工具生成对应的cycle.py文件。
Pyside2笔记:循环显示图像_第3张图片


#  cycle.py文件
# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'cycle.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(500, 400)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.labelDisplayImg = QLabel(self.centralwidget)
        self.labelDisplayImg.setObjectName(u"labelDisplayImg")
        self.labelDisplayImg.setGeometry(QRect(20, 20, 400, 300))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 500, 22))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        self.labelDisplayImg.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
    # retranslateUi


接下来写主函数

from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtCore import QTimer
from PySide2.QtGui import QPixmap, QImage
from ui.cycle import Ui_MainWindow   #此处ui是存放cycle.py的文件夹,根据自己路径写即可
import cv2
import sys
import glob


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        # 获取路径下所有jpg图像的路径
        self.images = glob.glob('../images/*.jpg')
        self.n = 0
        self.timer = QTimer(self)

    def window_init(self):
        show_img(self.images[self.n])

        self.labelDisplayImg.setScaledContents(True)
        self.timer.timeout.connect(self.timer_TimeOut)
        self.timer.start(500)

    def timer_TimeOut(self):
        if self.n >= (len(self.images) - 1):
            # self.n = 0     # 循环显示
            self.timer.stop() # 到设置数量停止
        show_img(self.images[self.n])
        self.n += 1

# 设置label显示图像函数
def show_img(img):
    img = cv2.imread(img)
    imgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    imgc = QImage(imgb.data, imgb.shape[1], imgb.shape[0], imgb.shape[1]*3, QImage.Format_RGB888)
    window.labelDisplayImg.setPixmap(QPixmap.fromImage(imgc))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.window_init()
    window.show()
    app.exec_()

此处在函数中设置了图像路径,也可以设置一个菜单或者按钮实现选中的文件夹,进行读取图片循环或显示到设置的图片数量停止,感兴趣的可以自己试试。

你可能感兴趣的:(ui,qt,python)