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

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

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

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

1. 准备工作

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

pip install PyQt5

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

2. 创建主程序

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

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. "微天气" - 一个基于微信小程序的智能天气预报体验_天气预报小程序开发
相关推荐
环能jvav大师6 分钟前
基于R语言的统计分析基础:使用SQL语句操作数据集
开发语言·数据库·sql·数据分析·r语言·sqlite
吱吱鼠叔9 分钟前
MATLAB方程求解:1.线性方程组
开发语言·matlab·php
今天也要加油丫11 分钟前
`re.compile(r“(<.*?>)“)` 如何有效地从给定字符串中提取出所有符合 `<...>` 格式的引用
python
Antonio91514 分钟前
【CMake】使用CMake在Visual Studio内构建多文件夹工程
开发语言·c++·visual studio
LyaJpunov27 分钟前
C++中move和forword的区别
开发语言·c++
程序猿练习生32 分钟前
C++速通LeetCode中等第9题-合并区间
开发语言·c++·leetcode
一名路过的小码农42 分钟前
C/C++动态库函数导出 windows
c语言·开发语言·c++
m0_631270401 小时前
标准c语言(一)
c语言·开发语言·算法
万河归海4281 小时前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
Messiah___1 小时前
【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
开发语言·php