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

使用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_indexcurrent_index = (current_index + 1) % len(images)  # 循环切换到下一张图片show_image()def previous_image():global current_indexcurrent_index = (current_index - 1) % len(images)  # 循环切换到上一张图片show_image()def jump_to_image():global current_indexindex_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.mzph.cn/news/104188.shtml

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

相关文章

在 TensorFlow 中调试

如果调试是消除软件错误的过程&#xff0c;那么编程一定是添加错误的过程。Edsger Dijkstra。来自 https://www.azquotes.com/quote/561997 一、说明 在这篇文章中&#xff0c;我想谈谈 TensorFlow 中的调试。 在之前的一些帖子&#xff08;此处、此处和此处&#xff09;中&…

谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)

有一个5*5的网格&#xff0c;其中恰好有一个格子是空的&#xff0c;其他格子各有一个字母。一共有4种指令&#xff1a;A, B, L, R&#xff0c;分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指令序列&#xff08;以数字0结束&#xff09;&#xff0c;输出指…

Linux shell编程学习笔记11:关系运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、字符串、文件测试等多种运算。前面几节我们研究了 Linux shell编程 中的 字符串运算 和 算术运算&#xff0c;今天我们来研究 Linux shell编程中的的关系运算。 一、关系运算符功能说明 运算符说明…

go语言基础之变量

目录 视频学习地址&#xff1a;Go零基础入门_在线视频教程-CSDN程序员研修院 一. 单变量声明和赋值 1、变量的声明 2、变量赋值 3、声明并赋值 二. 多变量声明和赋值 1、多变量声明 2、多变量赋值 三. 变量声明赋值的简易写法 1、单变量简易写法 2、多变量简易写法 …

DOSBox和MASM汇编开发环境搭建

DOSBox和MASM汇编开发环境搭建 1 安装DOSBox2 安装MASM3 编译测试代码4 运行测试代码5 调试测试代码 本文属于《 X86指令基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 安装DOSBox 下载DOSBox和MASM&#xff1a;https://download.csdn.net/download/u011832525/884180…

uniapp封装loading 的动画动态加载

实现效果 html代码 <view class"loadBox" v-if"loading"><img :src"logo" class"logo"> </view> css代码 .loadBox {width: 180rpx;min-height: 180rpx;border-radius: 50%;display: flex;align-items: center;j…

【面试经典150 | 哈希表】存在重复元素 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;哈希表方法二&#xff1a;滑动窗口 其他语言python3哈希表python3滑动窗口 写在最后 Tag 【哈希表】【滑动窗口】【数组】 题目来源 219. 存在重复元素 II 题目解读 判断在数组中有没有相同的元素小于一定的距离。 解…

Win10 系统中用户环境变量和系统环境变量是什么作用和区别?

环境&#xff1a; Win10专业版 问题描述&#xff1a; Win10 系统中用户环境变量和系统环境变量是什么作用和区别&#xff1f; 解答&#xff1a; 在Windows 10系统中&#xff0c;用户环境变量和系统环境变量是两个不同的环境变量&#xff0c;它们具有不同的作用和区别 1.用…

【Debian】报错:su: Authentication failure

项目场景&#xff1a; 今天我重新刷了一个debian系统。 系统版本&#xff1a; # 查看系统版本 lsb_release -a 我的系统版本&#xff1a; No LSB modules are available. Distributor ID&#xff1a;Debian Description: Debian GNU/Linux 12 &#xff08;bookworm&#xff…

目录启示:PHP 与命名空间的声明

文章目录 参考环境命名空间概念版本支持影响范围 全局命名空间概念魔术常量 \_\_NAMESPACE\_\_声明全局命名空间 声明命名空间为空间命名命名规则核心命名空间 子命名空间的声明在同一文件中定义多个命名空间无括号命名空间声明有括号命名空间声明禁止混合使用推荐使用有括号命…

统信UOS1060设置自动关机01

原文链接&#xff1a;统信UOS1060设置自动关机01 hello&#xff0c;大家好啊&#xff0c;今天给大家介绍一篇如何在统信UOS 1060上实现自动关机的文章&#xff0c;本篇文章采用两种方式&#xff0c;第一种使用的是crontab定时任务的方式&#xff0c;第二种是使用at命令的方式&a…

实体解析实施的复杂性

实体的艺术表现斯特凡伯克纳 一、说明 实体解析是确定数据集中的两条或多条记录是否引用同一现实世界实体&#xff08;通常是个人或公司&#xff09;的过程。乍一看&#xff0c;实体分辨率可能看起来像一个相对简单的任务&#xff1a;例如&#xff0c;给定一张人物的两张照片&a…

natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问

文章目录 1.几个基本概念1.1 局域网1.2 内网1.3 内网穿透1.4 Natapp 2.搭建内网穿透环境3.本地服务测试 1.几个基本概念 1.1 局域网 LAN&#xff08;Local Area Network&#xff0c;局域网&#xff09;是一个可连接住宅&#xff0c;学校&#xff0c;实验室&#xff0c;大学校…

2核4G游戏服务器推荐(阿里云/腾讯云/华为云)

2核4G游戏服务器推荐&#xff0c;首选腾讯云2核4G5M带宽轻量应用服务器218元一年、阿里云2核4G4M带宽轻量应用服务器297元一年&#xff0c;华为云2核2G3M云耀L服务器95元一年&#xff0c;阿腾云来详细说下2核4G游戏服务器推荐配置大全&#xff1a; 目录 2核4G游戏服务器推荐 …

前端 js导出excel

一、导出效果 二、导出代码 download() {let data [{name: aaaa,age: 10,address: 广东,phone: 1,wechart: 1},{name: bbbb,age: 11,address: 广西,phone: 2,wechart: 2},{name: cccc,age: 12,address: 山东,phone: 3,wechart: 3}]if (!data.length) {this.$Message.warnin…

暴力递归转动态规划(九)

题目 题有点难&#xff0c;但还挺有趣 有一个咖啡机数组arr[]&#xff0c;其中arr[i]代表每一个咖啡机冲泡咖啡所需的时间&#xff0c;有整数N&#xff0c;代表着准备冲咖啡的N个人&#xff08;假设这个人拿到咖啡后喝完的时间为0&#xff0c;拿手里咖啡杯即变空&#xff09;&a…

postman和jmete接口测试的用法与区别

前言 前阶段做了一个小调查&#xff0c;发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大…

【Qt】字体更大的富文本

使用size属性只能生成7个等级的字号&#xff0c;超过7的都视作为7。 当需要更加夸张的字号时则需要使用style属性&#xff0c;除此之外利用该属性可以生成更加逆天丰富的样式&#xff0c;(style属性是CSS样式表。 稍微跑题一下&#xff1a;似乎有安全性的考量&#xff0c;不少…

如何快速区分GPT-3.5 与GPT-4?

GPT 3.5 和 GPT-4 有什么区别&#xff1f; GPT-3.5 在经过大量数据训练后&#xff0c;成功地发展到可以考虑 1750 亿个参数以响应提示。这使其具备令人印象深刻的语言技能&#xff0c;以非常人性化的方式回应各种查询。然而&#xff0c;GPT-4 在更为庞大的训练数据基础上进行了…

【Qt】对话框QDialog

文章目录 **对话框**QDialog**基本概念**对话框分类标准对话框自定义消息框模态对话框非模态对话框 案例&#xff1a;点击新建按钮弹出对话框消息对话框其它标准对话框 对话框QDialog 基本概念 对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组…