使用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实现
- 机器学习MATLAB实现:Matalb-邻域平均法、均值滤波法、中值滤波法对图像进行平滑去噪_邻域平均滤波
- 机器学习MATLAB实现:MATLAB-直方图均衡化_matlab直方图均衡化
- 机器学习MATLAB实现:基于DCT变换的JPEG图像压缩_dct变换图像压缩
- 机器学习MATLAB实现:Matalb-图像均值滤波,中值滤波,梯度锐化(sobel算子)的实现_matlab sobel滤波
- 机器学习MATLAB实现:Matlab-梯度Roberts算子、拉普拉斯算子、Sobel算子、Prewitt算子对图像进行锐化
深度学习
- 深度学习调参经验:优化神经网络性能的关键八大步骤
Python示例
-
Python代码示例:将一个文件夹中未标记的文件复制到另一个文件夹
-
Python代码示例:比较两个文件夹中的文件名并打印相同的文件
-
Python代码示例:使用Pillow库轻松实现图像尺寸调整——>使每个图像具有相同的大小,方便模型处理和训练_pillow 获取图片尺寸_安静到无声的博客-CSDN博客
-
Python代码示例:求取文件夹下图片的均值与方差——>消除异常数据,保证所有像素值都处于比较合理的范围,提高模型的性能。_安静到无声的博客-CSDN博客
-
Python代码示例:使用Python的Pillow库对图片进行格式转换和重命名
-
Python代码示例:利用Python代码批量修改文件名_批量修改文件名
-
Python代码示例:遍历文本文件中的图片信息并复制图片
-
Python代码示例:Python实现Imagenet数据集的合并和拆分
-
Python代码示例:AI助手帮你轻松做好Imagenet数据集重命名与复制
-
Python代码示例:python实现获取当前目录下的树形结构_python 读取目录结构
-
Python代码示例:使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo_python rgba转rgb
-
Python代码示例:如何将通过Image.open读出的图片从单通道->三通道
-
用Python对文件夹下的图片命名进行批量更改_python修改图片名
-
Python代码示例:爬取网站图片
-
Python代码示例:Python中的列表推导式(List Comprehensions)及其条件筛选法_python 列表推导式多个条件
Opencv-python教程
- Opencv-python教程:python-opencv(1)图像的基础操作
- Opencv-python教程:python-opencv(2)图像运算
- Opencv-python教程:python-opencv(3)图像类型转换
- Opencv-python教程:python-opencv(4)–几何变换
- Opencv-python教程:python-opencv(10)图像金字塔
- Opencv-python教程:python-opencv(11)图像轮廓
- Opencv-python教程:python-opencv(12)直方图
- Opencv-python教程:python-opencv(13)傅里叶变换
模式识别与机器学习(Python实现)
- 模式识别与机器学习(Python实现):基于sklearn朴素贝叶斯模型和pazen窗方法实现男女分类
- 模式识别与机器学习(Python实现):基于贝叶斯判决皮肤检测的简单实现
- 模式识别与机器学习(Python实现):基于PCA降维和KNN分类的人脸识别
- 模式识别与机器学习(Python实现):基于PCA–LDA的人脸识别
- 模式识别与机器学习(Python实现):基于聚类的图片分割
- 模式识别与机器学习(Python实现):决策树分男女
- 模式识别与机器学习(Python实现):基于压缩近邻法的分类问题
- 模式识别与机器学习(Python实现):如何用MCMC产生任意的概率分布随机数?Python简单实现
Tensorflow学习
Tensorflow1.x
- Tensorflow1.x:tf中tensor和numpy
- Tensorflow1.x:tf.Variable中trainable作用
- Tensorflow1.x:tesorflow 计算模型复杂度
- Tensorflow1.x:L2正则化和collection【tf.GraphKeys】
- Tensorflow1.x:Tensorflow 变量及共享变量
Tensorflow2.x
- Tensorflow2.x:创建keras环境步骤
- Tensorflow2.x:tensorflow2.0 深度学习基础和tf.keras
- Tensorflow2.x:tensorflow2.0 卷积神经网络的实现实例(卫星与湖)
- Tensorflow2.x:tensorflow2.0 tf.keras序列问题
- Tensorflow2.x:tensorflow2.0 实例猫狗识别(1)
- Tensorflow2.x:tensorflow2.0 eager模式与自定义训练网络
- Tensorflow2.x:tensorflow2.0 tf.keras猫狗识别(2)—自定义训练
- Tensorflow2.x:tebsorflow2.0 使用Keras编写自定义图层和模型
- Tensorflow2.x:tebsorflow2.0 多输出模型实例
- Tensorflow2.x:tebsorflow2.0 图像定位+分类(Oxford-IIIT数据集)
- Tensorflow2.x:tebsorflow2.0 图像语义分割(Oxford-IIIT数据集)
Python语法
- Python语法:Python中hasattr的具体用法
- Python语法:python中的语法使用(easydict set() plt.subplots() assert)
- Python语法:os.path库常用函数的使用_标准库os.path中的函数用来获取参数指定
- Python语法:argparse使用方法简单总结_python的argparse用法
- Python语法:python __all__含义
- Python语法:numpy方法积累
- Python语法:如何优雅的学习的getattr()函数
- 如何在pycharm中指定GPU
Pytorch语法
- Pytorch语法:pack_padded_sequence用法与完整示例
- Pytorch语法:pytorch中的torch.manual_seed()
- Pytorch语法:torch.autograd.Function 学习理解
- Pytorch语法:为什么设置cudnn.benchmark = True
- Pytorch语法:pytorch权重初始化_pytorch 权重初始化
- Pytorch语法:pytorch使用方法积累
- Pytorch语法:如何用Pytorch加载部分权重
数据集使用
- pycocotools数据集讲解、安装与使用_安静到无声的博客-CSDN博客
Linux调试
- Linux调试:更改CUDA版本<此博文仅供自己参考>_cuda怎么改版本
- Linux调试:linux操作命令_vi train.py
- Linux调试:如何优雅的解决Pycharm在jupyter notebook的Port问题
- Linux调试:如何优雅的在linux下对指定文件夹解压_linux解压单个文件
- Linux调试:Linux下文件夹的移动与复制_linux 复制整个文件夹
- Linux调试:如何优雅的使用GPU监控
- Linux调试:如何在远程服务器下运行tensorboard,并在本地服务器看运行情况
Bug调试
- Bug调试:成功解决OSError: [E050] Can’t find model ‘en_core_web_sm’._
- Bug调试:成功解决Resource punkt not found错误
- Bug调试:成功解决NLTK包的安装错误
- Bug调试:成功解决http.client.RemoteDisconnected: Remote end closed connection without response
- 成功解决:ValueError Cannot assign non-leaf Tensor to parameter ‘weight‘.md
- 成功解决AttributeError: module ‘torch.distributed‘ has no attribute ‘all_gather_base‘
- 成功解决ImportError: /home/mona/research/code/frankmocap/detectors/hand_object_detector/lib/model/C.cpy
- 成功解决安装spacy==2.x出现的问题:功解决sre_constants.error: bad escape \p at position 173-CSDN博客
- 成功解决安装spacy==2.x出现的问题:OSError: E050] Can‘t find model ‘en_core_web_sm‘. It doesn‘t seem to be …_
其他
- 常用的水下图像数据集
- “微天气” - 一个基于微信小程序的智能天气预报体验_天气预报小程序开发

相关文章:

使用PyQt5创建图片查看器应用程序
使用PyQt5创建图片查看器应用程序 作者:安静到无声 个人主页 在本教程中,我们将使用PyQt5库创建一个简单的图片查看器应用程序。这个应用程序可以显示一系列图片,并允许用户通过按钮切换、跳转到不同的图片。 1. 准备工作 首先࿰…...

怎样制作一个展会场馆预约小程序
随着互联网的发展,展会行业也逐渐向数字化转型。展会场馆预约小程序作为展会线下向线上的延伸,能够让参展商和观众随时随地进行预约,大大提升了客户的体验。那么,如何制作一个展会场馆预约小程序呢?下面就以乔拓云平台…...

呼叫中心系统信息发送功能的应用
通常情况下功能比较齐全的呼叫中心系统都会有短信功能,那么短信功能在呼叫中心职场中有哪些应用呢? 呼叫中心系统中短信功能主要分为三部分:短信发送、待发送短信、短信发件箱,先来简单了解一下这三个功能在工作中如何使用。 短信…...

Android笔记(三)多Activity活动的切换中的简化处理
多Activity实现的跳转简单实现 Activity定义移动的界面。在本例中,介绍多个活动之间的切换的简化通用的实现。在本例中,定义三个活动MainActivity、FirstActivity和SecondActivity.要求能从MainActivity分别切换到FirstActivity和SecondActivity&#x…...

vue打包压缩
参考 https://www.cnblogs.com/lafitewu/p/8309305.html 注意:方法1和方法2不能同时用 取消打包的map config/index.js的productionSourceMap设置为false 抽取js 将部分常用又比较大的组件直接抽取为一个单独的js 打开webpack.base.conf.js,在module.exports.entry中添加想…...

Mysql5.7大限将至升级Mysql 8.0过程记录(未完)
一、前言 时间很快,到2023年10月底,MySQL 5.7就到了它的EOL(End of Life),届时将不会提供任何补丁,无法应对潜在的安全风险;是时候和 MySQL 5.7 说再见了!!!&…...
多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路
接上篇linux上构建任意版本的rocketmq多架构x86 arm镜像——筑梦之路-CSDN博客,本文适用于x86、arm等多架构环境。 话不多说,直接上代码。 准备broker配置文件 #broker配置文件示例 cat data/broker/conf/broker.conf brokerClusterName DefaultClus…...

[Unity][VR]Passthrough2-创建一个基本的Passthrough应用
上一期我们对PassthroughXR项目做好了基本的项目设置,今天我们就开始构建一个基本的Passthrough应用。 我们还是从基本场景开始。先把默认的main camera删除。因为后续我们会引入OVR Rig对象,这个对象自带Camera用来实现VR视角。 在Project面板我们搜索OVR camera rig。看见…...

【Unity3D赛车游戏制作】设置面板搭建——UGUI复合控件
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
如何让 Source Insight 识别 AUTOSAR 宏定义 FUNC
有很多从事汽车电子行业的软件工程师在使用Source Insight阅览Classic AUTOSAR协议栈源码的时候, 发现函数名无法解析,基本上都变成了FUNC。 先说原因: AUTOSAR的协议栈为了实现多平台和编译器兼容,大量使用宏定义来代替关键字。…...

sts搭建springboot
sts搭建springboot 需要的软件 Apache-maven-3.3.9.rar 链接:百度网盘 请输入提取码 提取码:1xgj Spring-tool-suite-4-4.20.0.RELEASE-e4.29.0-win32.win32.x86_64.self-extracting.jar 链接:百度网盘 请输入提取码 提取码:p…...

解决react使用css module无法重写bootstrap样式的问题
react使用css module虽然能够解决样式污染,但是同时也失去了写css样式的灵活性,特别是:在.module.css文件中当子元素是非变量的静态class类(比如bootstrap), 此时使用css选择器对该子元素的样式不会起作用的 比如下面…...

自动驾驶软件和人工智能
自动驾驶汽车的核心在于其软件系统,而其中的机器学习和深度学习技术是使车辆能够感知、理解、决策和行动的关键。本文将深入探讨这些技术在自动驾驶中的应用,包括感知、定位、路径规划以及道路标志和交通信号的识别。 1. 机器学习和深度学习在自动驾驶中…...

堆叠、集群技术
1.堆叠、集群技术的概述 堆叠、集群简介 堆叠(iStack),将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体参与数据转发。 集群(Cluster Switch System…...

SpringCould微服务保护01——Sentinel组件下载并使用
1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被…...
可扩展性对物联网管理系统有哪些影响?
可扩展性对于物联网管理系统的设计和开发非常重要,它直接影响着系统的性能、可靠性和能耗等方面,是评估一个系统优劣的重要因素之一。可扩展性对物联网管理系统的影响主要体现在以下几个方面: 设备兼容性:物联网管理系统的可扩展性…...

洗地机哪个品牌最耐用质量好?2023年最好用的洗地机
随着科技的发展,人们的生活越来越便利,就拿打扫卫生来说,现在越来越多人抛弃扫把、地拖,转而选择让清洁更加轻松的清洁家电,而洗地机就是这样一种让打扫卫生变得简单轻松的家电。近年来洗地机销量剧增,是目…...

计算机视觉(Computer Vision, CV)是什么?
什么是计算机视觉 近年来,计算机视觉 (Computer Vision,简称CV) 不断普及,已成为人工智能 (AI) 增长最快的领域之一。计算机视觉致力于使计算机能够识别和理解图像和视频中的物体和人。 计算机视觉应用程序使用来自传感设备、人工智能、机器…...

【【萌新的SOC学习之自定义IP核 AXI4接口】】
萌新的SOC学习之自定义IP核 AXI4接口 自定义IP核-AXI4接口 AXI接口时序 对于一个读数据信号 AXI突发读 不要忘记 最后还有拉高RLAST 表示信号的中止 实验任务 : 通过自定义一个AXI4接口的IP核 ,通过AXI_HP接口对PS端 DDR3 进行读写测试 。 S_AXI…...
设计模式-创建型模式
文章目录 一、单例模式1.饿汉式(1) 静态变量(2) 静态代码块(3) 枚举方式 2.懒汉式(1) 双检锁(2) 静态内部类 3.破坏单例模式(1) 序列化(2) 反射 4.解决单例模式被破坏(1) 序列化、反序列化破坏单例模式的解决方法(2) 反射破坏单例解决 二、工厂方法模式1.简单工厂模式2.工厂方法…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...