PyQt5简单读取&显示图片的应用

这篇具有很好参考价值的文章主要介绍了PyQt5简单读取&显示图片的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文为PyQt5入门教程,具体为以下四步骤

  • 一、程序界面简单设计
  • 二、通过下拉列表框读取读取指定路径的图片
  • 三、通过读取到的图片显示在界面上
  • 四、退出事件

最终效果如下:pyqt5显示图片,python,机器学习,qt5,人工智能 


 

一、程序界面简单设计

程序初始构成如下

#利用PyQt建立界面必须使用QApplication,代表整个应用程序,是整个Qt的命脉,主要负责应用程序的初始化和结束
import sys  #引用sys库
from PyQt5 import QtWidgets #引用PyQt5库里QtWidgets类
from PyQt5.QtWidgets import *   #导入PyQt5.QtWidgets里所有的方法
from PyQt5.QtGui import *    #导入PyQt5.QtGui里所有的方法
import os    #引用os库
class Qt_Window(QWidget):   #定义一个类,继承于QWidget
    def __init__(self): #构建方法
        self._app = QtWidgets.QApplication([])  #创建QApplication示例
        super(Qt_Window,self).__init__()    #固定格式

    def init_ui(self):  #定义方法,在该方法里构建界面组件
        self.win = QMainWindow()




        self.win.showFullScreen()   #窗口全屏显示,不带标题栏和边框
        sys.exit(self._app.exec_()) #sys.exit()退出程序机制 app.exec_()的作用是运行主循环,开始进行事件处理,直到结束
s = Qt_Window() #调用对象和方法
s.init_ui() #调用对象和方法

在 init_ui内开始界面布局(注:分辨率为1920 × 1080) 

def init_ui(self):
        self.win = QMainWindow()

        #定义组件
        self.comboBox = QComboBox(self.win)    #下拉列表框
        self.number_lable = QLabel(self.win)    #标签
        self.open_Button = QPushButton(self.win)    #退出按钮
        self.detect_image = QLabel(self.win)    #图片(目前为标签控件,需要后续将其转换为图片控件)
        
        #设置控件
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)

        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")

        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)

        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
        
        #resize为设置大小,move为设置x与y坐标,setText为设置控件文本内容
        
      
        self.win.showFullScreen()
        sys.exit(self._app.exec_())

结果应为pyqt5显示图片,python,机器学习,qt5,人工智能 注:此时的退出按钮没有效果,可自行退出界面

当前布局代码:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
class Qt_Window(QWidget):
    def __init__(self):
        self._app = QtWidgets.QApplication([])
        super(Qt_Window,self).__init__()

    def init_ui(self):
        self.win = QMainWindow()

        self.comboBox = QComboBox(self.win)
        self.number_lable = QLabel(self.win)
        self.open_Button = QPushButton(self.win)
        self.detect_image = QLabel(self.win)
        
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)

        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")

        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)

        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
   
        self.win.showFullScreen()
        sys.exit(self._app.exec_())

s = Qt_Window()
s.init_ui()

二、通过下拉列表框读取指定路径上的图片

1.设置路径

一般情况下最好设置为绝对路径,在init_ui内输入以下:

self.path = ("C:\\123\\picture\\")

设置路径的时候一定要注意要输入“\\”而非单个“\”,单个“\”将会对“\”后的第一个字母进行转义! 

2.将读取到的图片名称添加到下拉列表框内

使用os.listdir()指令,将文件夹内的所有文件读取出来

        self.img_list = os.listdir(self.path)

此时可以尝试输出一下这个self.img_list

pyqt5显示图片,python,机器学习,qt5,人工智能

 (文件夹内) 

pyqt5显示图片,python,机器学习,qt5,人工智能

(输出结果)

可以看出结果是符合的,并且返回出来的结果为列表,倘若要将此结果添加到下拉列表框内,那么应该使用for ... in ... 循环将数据代入

        self.comboBox.addItems([self.img_list[i] for i in range(len(self.img_list))])

以上代码的意思为:将self.img_list这个列表内的数据以此添加到下拉列表框内。

self.comboBox.addItems()为添加多个列表

for i in range(len(self.img_list))先通过len算出self.img_list的长度为3,再利用range将其转换为0-3的区间,然后将0-3的数字以此代入i后,再将self.img_list[i]里的数据以此添加到里面。

如:self.img_list[0]为天空.jpg;self.img_list[1]为海洋.jpg

注意:range()输出的是一串连续的数据,而len()输出的是单个数据,所以当放入循环操作时,range()会进行多次循环,而len()只会进行一次循环!

此时打开串口可以看到下拉列表框内已添加了路径内所有的图片

pyqt5显示图片,python,机器学习,qt5,人工智能

 

3.将读取到的图片展示到界面上

我们需要实时监测下拉列表框选择了哪个图片,此时我们可以自行定义一个选择列表事件

    def show_img(self):
        img = self.comboBox.currentText()
        pix = QPixmap(self.path + "\\" +img)    #需额外添加"\\"否则输出为C:\123\picture093056.jpg
        self.detect_image.setPixmap(pix)
        self.detect_image.setScaledContents(True)
        self.number_lable.setText(img)

首先通过currentText()函数获取到当前下拉列表框内的文字(图片名称),再将所获取到的图片名称再加上路径,就可以利用QPixmap来展示出来。将pix变成你选择的图片,再利用setPixmap函数将界面上的detect_image控件从标签转换成图片。

由于图片的分辨率不为统一,所以可以加上setScaledContents(True)这个函数将其设置为自适应大小(之前设置界面时所设置的控件大小)

self.number_lable.setText(img)是将读取到的图片名称输出到界面上

此时还只是定义了这个事件,我们需要将这个事件和下拉列表框进行绑定,在init_ui下输入以下代码

        self.comboBox.activated.connect(self.show_img)

此时打开界面并选择图片可以看到以下结果

pyqt5显示图片,python,机器学习,qt5,人工智能

 如果想将海洋.jpg更改为海洋,可以在选择列表事件内将设置标签文本的代码修改为以下

        lable = img.split(".")[0]
        self.number_lable.setText(lable)

通过split(“.”)指令将海洋.jpg中以“.”为分隔符输出(海洋,jpg)列表,并通过在后方添加[0],表示仅输出第一个也就是仅输出为“海洋”

此时再打开界面可看见pyqt5显示图片,python,机器学习,qt5,人工智能

四、退出事件

1.定义一个退出事件

自定义退出事件

    def exit(self): #定义关闭事件
        while True:
            sys.exit(0) #sys.exit(0)为正常退出  sys.exit(1)为异常退出

 再将退出按钮控件和退出事件进行绑定

        self.open_Button.clicked.connect(self.exit)

此时打开界面点击退出按钮即可正常退出了 

总结

完整代码如下

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
class Qt_Window(QWidget):
    def __init__(self):
        self._app = QtWidgets.QApplication([])
        super(Qt_Window,self).__init__()

    def init_ui(self):
        self.win = QMainWindow()

        self.comboBox = QComboBox(self.win)
        self.number_lable = QLabel(self.win)
        self.open_Button = QPushButton(self.win)
        self.detect_image = QLabel(self.win)

        #设置路径
        self.path = ("C:\\123\\picture\\")
        
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)
        self.img_list = os.listdir(self.path)
        self.comboBox.addItems([self.img_list[i] for i in range(len(self.img_list))])
        self.comboBox.activated.connect(self.show_img)


        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")
        self.open_Button.clicked.connect(self.exit)

        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)

        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
        
      
        self.win.showFullScreen()
        sys.exit(self._app.exec_())

    def show_img(self):
        img = self.comboBox.currentText()
        pix = QPixmap(self.path + "\\" +img)
        self.detect_image.setPixmap(pix)
        self.detect_image.setScaledContents(True)
        lable = img.split(".")[0]
        self.number_lable.setText(lable)

    def exit(self):
        while True:
            sys.exit(0)

s = Qt_Window()
s.init_ui()

以上便是本人的制作过程,如遇问题或者文章有错误可私信或者评论 文章来源地址https://www.toymoban.com/news/detail-780832.html

到了这里,关于PyQt5简单读取&显示图片的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PyQt】PyQt5进阶——串口上位机及实时数据显示

    【Python】PyQt5入门   最近在用PyQt做一个串口上位机,需要串口通信和实时显示曲线。这里简单记录一些关键点。   这个是在安装PyQt5时自动安装的组件,使用方法比较简单,主要是两个模块: QSerialPort , QSerialPortInfo   以上就是串口部分的代码,比较简单,利用代码提

    2024年02月12日
    浏览(55)
  • pyqt5使用Designer实现按钮上传图片

    1、ui界面 2、ui转py代码 其中 uploadimg.py 代码如下: 3、upload_main.py主函数代码 upload_main.py 代码如下: 4、效果图

    2024年02月04日
    浏览(62)
  • PyQt5制作一个简单的登录界面

    最近在学习GUI设计,分享做的一些小项目。 这篇文我们讲一下如何制作一个简单的登录界面。 如下: 1、QtDesigner里绘制UI界面并设置属性 布局根据个人喜好,部件颜色、字体、背景属性在styleSheet里设置。 2、材料转换(将.ui文件转.py,.qrc文件转_rc.py) 通过PyUIC和PyRcc即可完成。

    2024年02月03日
    浏览(53)
  • PyQt5按下按键选择文件并显示路径

    一、可直接运行代码 二、函数解释 fileName是文件的绝对路径,fileType是文件类型 第一个参数parent,用于指定父组件,一般是一个窗口,在这个窗口建立选择文件的对话框。这里是None。 第二个参数caption,定义这个选择文件的对话框的标题。 第三个参数dir,是对话框显示时默认

    2024年02月11日
    浏览(43)
  • PyQt5 视频播放--在QVideoWidget上显示视频

    1、功能概述 (1)QMediaPlayer不仅可以播放音频文件,还可以播放wmv、avi等视频文件。 2、主要函数 (1)setMedia(QMediaContent):指定一个媒体资源; (2)setPlaylist():指定一个播放列表; (3)setVideoOutput(QVideoWidget):指定一个界面组件用于视频显示; 重构参数: setVideoOutput(self

    2024年02月01日
    浏览(42)
  • PyQt5组件之QLabel显示图像和视频

    目录 一、显示图像和视频 1、显示图像  2、显示视频 二、QtDesigner 窗口简单介绍 三、相关函数 1、打开本地图片 2、保存图片到本地 3、打开文件夹 4、打开本地文本文件并显示 5、保存文本到本地 6、关联函数 7、图片 “.png” | “.jpn” Label 自适应显示 8、QLabel常用方法 1、显

    2024年02月13日
    浏览(40)
  • 【pyqt5界面化工具开发-11】界面化显示检测信息

    目录 0x00 前言: 一、布局的设置 二、消息的显示 我们在10讲的基础上,需要将其输出到界面上 思路: 1、消息的传递 2、布局的设置 先考虑好消息的传递,再来完善布局 其实先完善布局,再来设置消息的传递也行 (我不是中国人,就是外国人) 将布局设置好以后,我们就

    2024年02月10日
    浏览(45)
  • 《PyQt5桌面应用开发》结束语

    这个系列从五月初期写到现在,一共写了21篇,基本上把我个人感觉里面PyQt5中比较有意思的内容都涉及到了。总的来说,一大部分是我很满意的,也是我在使用PyQt5中感觉到的痛点与花费了很常见去看文档的部分。也有不满意的地方,那就是所有的都写得很浅很浅。只能是做

    2024年02月11日
    浏览(53)
  • 使用PyQt5设计一款简单的计算器

    目录 一、环境配置: 二、代码实现 三、主程序 四、总结         本文使用PyQt5设计一款简单的计算器,可以通过界面交互实现加减乘除的功能,希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。 具体界面如下

    2024年02月03日
    浏览(35)
  • pyqt5, 如何在窗口上显示10个点地循环进度条。

    要在PyQt5窗口上显示从1个点逐渐增加到10个点,然后周而复始地循环,可以使用PyQt5的图形绘制功能和定时器来实现。以下是一个简单的例子: import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QColor, QBrush from PyQt5.QtCore import Qt, QTimer class PointDisplay(QWidget

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包