使用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实现
- 机器学习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 …_
其他
- 常用的水下图像数据集
- “微天气” - 一个基于微信小程序的智能天气预报体验_天气预报小程序开发