使用PyQt5创建图片查看器应用程序

news2024/11/19 16:32:00

使用PyQt5创建图片查看器应用程序

作者:安静到无声 个人主页

在本教程中,我们将使用PyQt5库创建一个简单的图片查看器应用程序。这个应用程序可以显示一系列图片,并允许用户通过按钮切换、跳转到不同的图片。

1. 准备工作

首先,我们需要安装PyQt5库。打开终端或命令提示符,运行以下命令:

pip install PyQt5

确保你已经安装了Python和pip,并且可以正常运行。

2. 创建主程序

创建一个名为 image_viewer.py 的Python文件,并将以下代码复制进去:

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QPushButton, QLineEdit
from PyQt5.QtGui import QPixmap

# 图片路径
images = [
    'F:/BaiduSyncdisk/图片/n02009912_2248_Highgreen.JPEG',
    'F:/BaiduSyncdisk/图片/n02013706_161_Highgreen.JPEG',
    'F:/BaiduSyncdisk/图片/n02281787_2344_Highblue.JPEG',
    'F:/BaiduSyncdisk/图片/n02281787_2354_Highblue.JPEG'

]
current_index = 0  # 当前显示的图片索引

def show_image():
    pixmap = QPixmap(images[current_index])
    label.setPixmap(pixmap)
    label.resize(pixmap.width(), pixmap.height())
    filename_label.setText(f'文件名:{images[current_index]}')

def next_image():
    global current_index
    current_index = (current_index + 1) % len(images)  # 循环切换到下一张图片
    show_image()

def previous_image():
    global current_index
    current_index = (current_index - 1) % len(images)  # 循环切换到上一张图片
    show_image()

def jump_to_image():
    global current_index
    index_str = input_box.text().strip()  # 获取输入框中的索引字符串
    if index_str.isdigit():  # 如果输入的是数字
        index = int(index_str) - 1  # 将索引转换为数字,并减去1(因为列表从0开始)
        if 0 <= index < len(images):  # 如果索引在图片列表范围内
            current_index = index  # 跳转到对应的图片
            show_image()

app = QApplication(sys.argv)
window = QMainWindow()
window.setGeometry(200, 350, 500, 400)

label = QLabel(window)
label.setGeometry(130, 20, 100, 100)  # 调整位置和大小
window.setWindowTitle('图片查看器')

filename_label = QLabel(window)
filename_label.setGeometry(100, 280, 380, 30)
show_image()

previous_button = QPushButton('上一张', window)
previous_button.move(70, 320)
previous_button.clicked.connect(previous_image)

next_button = QPushButton('下一张', window)
next_button.move(320, 320)
next_button.clicked.connect(next_image)

input_box = QLineEdit(window)
input_box.move(200, 320)

jump_button = QPushButton('跳转', window)
jump_button.move(200, 360)
jump_button.clicked.connect(jump_to_image)

window.show()
sys.exit(app.exec_())

这段代码定义了一个包含图片查看器功能的应用程序。具体来说,它使用了PyQt5库提供的各种小部件(widgets),比如QLabel、QMainWindow、QPushButton和QLineEdit等。

3. 运行应用程序

保存并运行 image_viewer.py 文件,你将看到一个简单的图片查看器应用程序界面。它显示了第一张图片,并且提供了上一张、下一张和跳转到指定图片的按钮。

你可以点击相应的按钮来切换图片或跳转到指定的图片。图片的文件名也会显示在窗口的底部。
在这里插入图片描述

结论在这里插入图片描述

在本教程中,我们使用PyQt5库创建了一个简单的图片查看器应用程序。这个应用程序可以帮助你浏览并切换不同的图片。

你可以根据实际需求进一步扩展这个应用程序,比如添加更多的功能按钮、支持更多的图片格式等。

希望本教程对你有所帮助!如果你有任何问题或疑问,请随时在评论区留言。


推荐专栏

💖模式识别与人工智能(程序与算法)

机器学习MATLAB实现
  1. 机器学习MATLAB实现:Matalb-邻域平均法、均值滤波法、中值滤波法对图像进行平滑去噪_邻域平均滤波
  2. 机器学习MATLAB实现:MATLAB-直方图均衡化_matlab直方图均衡化
  3. 机器学习MATLAB实现:基于DCT变换的JPEG图像压缩_dct变换图像压缩
  4. 机器学习MATLAB实现:Matalb-图像均值滤波,中值滤波,梯度锐化(sobel算子)的实现_matlab sobel滤波
  5. 机器学习MATLAB实现:Matlab-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化
深度学习
  1. 深度学习调参经验:优化神经网络性能的关键八大步骤
Python示例
  1. Python代码示例:将一个文件夹中未标记的文件复制到另一个文件夹

  2. Python代码示例:比较两个文件夹中的文件名并打印相同的文件

  3. Python代码示例:使用Pillow库轻松实现图像尺寸调整——>使每个图像具有相同的大小,方便模型处理和训练_pillow 获取图片尺寸_安静到无声的博客-CSDN博客

  4. Python代码示例:求取文件夹下图片的均值与方差——>消除异常数据,保证所有像素值都处于比较合理的范围,提高模型的性能。_安静到无声的博客-CSDN博客

  5. Python代码示例:使用Python的Pillow库对图片进行格式转换和重命名

  6. Python代码示例:利用Python代码批量修改文件名_批量修改文件名

  7. Python代码示例:遍历文本文件中的图片信息并复制图片

  8. Python代码示例:Python实现Imagenet数据集的合并和拆分

  9. Python代码示例:AI助手帮你轻松做好Imagenet数据集重命名与复制

  10. Python代码示例:python实现获取当前目录下的树形结构_python 读取目录结构

  11. Python代码示例:使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo_python rgba转rgb

  12. Python代码示例:如何将通过Image.open读出的图片从单通道->三通道

  13. 用Python对文件夹下的图片命名进行批量更改_python修改图片名

  14. Python代码示例:爬取网站图片

  15. Python代码示例:Python中的列表推导式(List Comprehensions)及其条件筛选法_python 列表推导式多个条件

Opencv-python教程
  1. Opencv-python教程:python-opencv(1)图像的基础操作
  2. Opencv-python教程:python-opencv(2)图像运算
  3. Opencv-python教程:python-opencv(3)图像类型转换
  4. Opencv-python教程:python-opencv(4)–几何变换
  5. Opencv-python教程:python-opencv(10)图像金字塔
  6. Opencv-python教程:python-opencv(11)图像轮廓
  7. Opencv-python教程:python-opencv(12)直方图
  8. Opencv-python教程:python-opencv(13)傅里叶变换
模式识别与机器学习(Python实现)
  1. 模式识别与机器学习(Python实现):基于sklearn朴素贝叶斯模型和pazen窗方法实现男女分类
  2. 模式识别与机器学习(Python实现):基于贝叶斯判决皮肤检测的简单实现
  3. 模式识别与机器学习(Python实现):基于PCA降维和KNN分类的人脸识别
  4. 模式识别与机器学习(Python实现):基于PCA–LDA的人脸识别
  5. 模式识别与机器学习(Python实现):基于聚类的图片分割
  6. 模式识别与机器学习(Python实现):决策树分男女
  7. 模式识别与机器学习(Python实现):基于压缩近邻法的分类问题
  8. 模式识别与机器学习(Python实现):如何用MCMC产生任意的概率分布随机数?Python简单实现
Tensorflow学习

Tensorflow1.x

  1. Tensorflow1.x:tf中tensor和numpy
  2. Tensorflow1.x:tf.Variable中trainable作用
  3. Tensorflow1.x:tesorflow 计算模型复杂度
  4. Tensorflow1.x:L2正则化和collection【tf.GraphKeys】
  5. Tensorflow1.x:Tensorflow 变量及共享变量

Tensorflow2.x

  1. Tensorflow2.x:创建keras环境步骤
  2. Tensorflow2.x:tensorflow2.0 深度学习基础和tf.keras
  3. Tensorflow2.x:tensorflow2.0 卷积神经网络的实现实例(卫星与湖)
  4. Tensorflow2.x:tensorflow2.0 tf.keras序列问题
  5. Tensorflow2.x:tensorflow2.0 实例猫狗识别(1)
  6. Tensorflow2.x:tensorflow2.0 eager模式与自定义训练网络
  7. Tensorflow2.x:tensorflow2.0 tf.keras猫狗识别(2)—自定义训练
  8. Tensorflow2.x:tebsorflow2.0 使用Keras编写自定义图层和模型
  9. Tensorflow2.x:tebsorflow2.0 多输出模型实例
  10. Tensorflow2.x:tebsorflow2.0 图像定位+分类(Oxford-IIIT数据集)
  11. Tensorflow2.x:tebsorflow2.0 图像语义分割(Oxford-IIIT数据集)
Python语法
  1. Python语法:Python中hasattr的具体用法
  2. Python语法:python中的语法使用(easydict set() plt.subplots() assert)
  3. Python语法:os.path库常用函数的使用_标准库os.path中的函数用来获取参数指定
  4. Python语法:argparse使用方法简单总结_python的argparse用法
  5. Python语法:python __all__含义
  6. Python语法:numpy方法积累
  7. Python语法:如何优雅的学习的getattr()函数
  8. 如何在pycharm中指定GPU
Pytorch语法
  1. Pytorch语法:pack_padded_sequence用法与完整示例
  2. Pytorch语法:pytorch中的torch.manual_seed()
  3. Pytorch语法:torch.autograd.Function 学习理解
  4. Pytorch语法:为什么设置cudnn.benchmark = True
  5. Pytorch语法:pytorch权重初始化_pytorch 权重初始化
  6. Pytorch语法:pytorch使用方法积累
  7. Pytorch语法:如何用Pytorch加载部分权重
数据集使用
  1. pycocotools数据集讲解、安装与使用_安静到无声的博客-CSDN博客
Linux调试
  1. Linux调试:更改CUDA版本<此博文仅供自己参考>_cuda怎么改版本
  2. Linux调试:linux操作命令_vi train.py
  3. Linux调试:如何优雅的解决Pycharm在jupyter notebook的Port问题
  4. Linux调试:如何优雅的在linux下对指定文件夹解压_linux解压单个文件
  5. Linux调试:Linux下文件夹的移动与复制_linux 复制整个文件夹
  6. Linux调试:如何优雅的使用GPU监控
  7. Linux调试:如何在远程服务器下运行tensorboard,并在本地服务器看运行情况
Bug调试
  1. Bug调试:成功解决OSError: [E050] Can’t find model ‘en_core_web_sm’._
  2. Bug调试:成功解决Resource punkt not found错误
  3. Bug调试:成功解决NLTK包的安装错误
  4. Bug调试:成功解决http.client.RemoteDisconnected: Remote end closed connection without response
  5. 成功解决:ValueError Cannot assign non-leaf Tensor to parameter ‘weight‘.md
  6. 成功解决AttributeError: module ‘torch.distributed‘ has no attribute ‘all_gather_base‘
  7. 成功解决ImportError: /home/mona/research/code/frankmocap/detectors/hand_object_detector/lib/model/C.cpy
  8. 成功解决安装spacy==2.x出现的问题:功解决sre_constants.error: bad escape \p at position 173-CSDN博客
  9. 成功解决安装spacy==2.x出现的问题:OSError: E050] Can‘t find model ‘en_core_web_sm‘. It doesn‘t seem to be …_
其他
  1. 常用的水下图像数据集
  2. “微天气” - 一个基于微信小程序的智能天气预报体验_天气预报小程序开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小黑子—MyBatis:第四章

MyBatis入门4.0 十 小黑子进行MyBatis参数处理10.1 单个简单类型参数10.1.1 单个参数Long类型10.1.2 单个参数Date类型 10.2 Map参数10.3 实体类参数&#xff08;POJO参数&#xff09;10.4 多参数10.5 Param注解&#xff08;命名参数&#xff09;10.6 Param注解源码分析 十一 小…

CVE-2017-15715 apache换行解析文件上传漏洞

影响范围 httpd 2.4.0~2.4.29 复现环境 vulhub/httpd/CVE-2017-15715 docker-compose 漏洞原理 在apache2的配置文件&#xff1a; /etc/apache2/conf-available/docker-php.conf 中&#xff0c;php的文件匹配以正则形式表达 ".php$"的正则匹配模式意味着以.ph…

金蝶EAS、EAS Cloud远程代码执行漏洞

【漏洞概述】 金蝶 EAS 及 EAS Cloud 是金蝶软件公司推出的一套企业级应用软件套件&#xff0c;旨在帮助企业实现全面的管理和业务流程优化。 【漏洞介绍】 金蝶 EAS 及 EAS Cloud 存在远程代码执行漏洞 【影响版本】 金蝶 EAS 8.0&#xff0c;8.1&#xff0c;8.2&#xf…

风电光伏混合储能功率小波包分解、平抑前后波动性分析、容量配置、频谱分析、并网功率波动分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

流计算概述(林子雨慕课课程)

文章目录 11. 流计算概述11.1 流计算概述11.1.1 数据的处理模型11.1.2 流计算概念与典型框架 11.2 流计算处理流程11.3 流计算的应用11.4 开源流计算框架Storm11.4.1 Storm 简介11.4.2 Storm设计思想11.4.3 Storm框架设计 11.5 Spark Spark Streaming Samza以及三种流计算框架比…

Python如何17行代码画一个爱心

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

xtrabackup全备 增备

版本针对mysql8.0版本 官方下载地址 https://www.percona.com/downloads 自行选择下载方式 yum安装方式 1、下载上传服务器 安装软件 [rootmaster mysql]# ll percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm -rw-r--r--. 1 root root 44541856 Oct 10 13:25 percona-x…

android 判断是否打开了蓝牙网络共享

最近做项目遇到需要判断手机是否打开了蓝牙网络共享的开关 //调用isBluetoothPanTetheringOn(context) {if (it) {Log.i("TAG","已打开")} else {Log.i("TAG","未打开")context.gotoBleShareSettings()} }/*** 是否打开蓝牙网络共享**…

idea中取消class文件显示所有方法的显示

一 idea中class文件取消显示方法 1.1 取消显示方法 1.显示如下 2.操作如下 3.显示如下

2023年中国固废处理行业研究报告

第一章 行业概况 1.1 定义 固体废物处理是一个日益重要的领域&#xff0c;随着中国城市化进程的加速和工业产值的持续增长&#xff0c;固体废物的产生量也在不断上升。根据《固体废物污染环境防治法》的定义&#xff0c;固体废物包括了人类在生产、生活和其他活动中产生的固态…

基于单目的光流法测速

目录 1.简介 2.代码实现 1.简介 基于单目的光流法是一种常见的计算机视觉技术&#xff0c;用于估计图像序列中物体的运动速度。它通过分析连续帧之间的像素变化来推断物体在图像中的移动情况。 背景&#xff1a; 光流法是计算机视觉领域中最早的运动估计方法之一&#xff0c…

BUUCTF 金三 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 只有一个附件&#xff0c;下载下来有一张GIF图片。 解题思路&#xff1a; 本题一共有2种解法&#xff08;本人找到的&#xff09; 方法一&#xff1a; 1、打开这张GIF图片&#xff0c;观察到不正常闪动&#xff0c;似…

《YOLO医学影像检测》专栏介绍 CSDN独家改进实战

&#x1f4a1;&#x1f4a1;&#x1f4a1;YOLO医学影像检测&#xff1a;http://t.csdnimg.cn/N4zBP ✨✨✨实战医学影像检测项目&#xff0c;通过创新点验证涨点可行性&#xff1b; ✨✨✨入门医学影像检测到创新&#xff0c;不断打怪进阶&#xff1b; 1.血细胞检测介绍 数据…

数据结构 - 2(顺序表10000字详解)

一&#xff1a;List 1.1 什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。 Collection也是一个接口&#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; Iterable也是一个接口&#xff0c;Iterabl…

security+JWT

securityJWT 添加依赖准备工作sqlUserInfoUserMapperUserService、UserServiceImpl 创建JwtUtils工具类&#xff0c;做token的生成和校验进入Security创建AccountDetailsServiceImpl&#xff0c;并且实现UserDetailsService编写登录操作 创建拦截器JWTAuthenticationFilter继承…

mac电影特效合成软件nuke15 完美激活版下载

Nuke 15是一款由英国The Foundry公司开发的专业的合成软件&#xff0c;被广泛用于电影、电视和广告制作中的后期合成和特效制作。 Mac软件下载&#xff1a;nuke15 完美激活版下载 Win软件下载&#xff1a;NUKE 13 中文激活版 Nuke 15拥有强大的功能和灵活性&#xff0c;可以帮助…

TartanVO: A Generalizable Learning-based VO 服务器复现(rtx3090 py3)

源码地址 代码地址&#xff1a;https://github.com/castacks/tartanvo/tree/python3 配环境 git clone https://github.com/castacks/tartanvo.git -b python3创建conda环境&#xff1a; conda create -n tartanvo python3.8安装pytorch conda install pytorch1.10.1 torc…

路由router

什么是路由? 一个路由就是一组映射关系&#xff08;key - value&#xff09;key 为路径&#xff0c;value 可能是 function 或 component 2、安装\引入\基础使用 只有vue-router3&#xff0c;才能应用于vue2&#xff1b;vue-router4可以应用于vue3中 这里我们安装vue-router3…

elementUI el-table+树形结构子节点选中后没有打勾?(element版本问题 已解决)

问题 1.不勾选父级CB111&#xff0c;直接去勾选子级&#xff08;ST2001…&#xff09;&#xff0c;子级选中后没有打勾显示 排查 一直以为是这个树形结构和表格不兼容产生的问题&#xff0c;到后来看官方demo都是可以勾选的&#xff0c;最后排查到了版本问题&#xff0c; 项…

电动滑板车UL2272认证测试项目和标准

平衡车ul2272认证标准于2016年2月正式公布&#xff0c;美国消费品安全协会(cpsc)宣布&#xff0c;所有平衡车(包括扭扭车)的制造商、进口商、经销商&#xff0c;其在美国本土生产、进口、销售的平衡车必须符合新的安全标准&#xff0c;包括ul2272平衡车电路系统认证标准。另外&…