pyqt5-图片游览界面

3 篇文章 0 订阅
3 篇文章 0 订阅

提要

  • 本项目是一个使用Python编写的图片游览器界面,并使用到PyQt5来绘制GUI
  • 这是我第一次开发GUI,对Python和PyQt的使用还不够熟练,如果有疑问我会尽量解答
  • 本项目仅支持jpg格式的图片,使用的Python版本为3.6.1
  • 项目的GitHub链接
    效果预览

项目简介

1、功能

本项目的重点在于实现三个按钮的功能:

self.ui.button_52.clicked.connect(self.select_pic)

self.ui.button_53.clicked.connect(self.next_pic)

self.ui.button_51.clicked.connect(self.previous_pic)

这些功能对应不同的方法

def select_pic(self) #选择图片

def next_pic(self) #下一张图片

def previous_pic(self) #上一张图片

2、特殊情况

在游览时会遇到五种情况:

  1. situation_1:游览到倒数第二张,只有四张图
  2. situation_2:游览到倒数第一张,只有三张图
  3. situation_3:游览到正数第一张,只有三张图
  4. situation_4:游览到正数第二张,只有四张图
  5. situation_normal:正常情况,五张图

这五种情况所对应的流程存在细小的差别,第一种情况的解决方案如下:

def situation_1(self):
    # 这种情况只需要四张图片的路径,主图路径在主函数合成,其他三张图的路径在本函数进行合成
    self.path_pic_previous2 = self.path_of_pic_folder + '/' + self.names_all_pics[self.index_main - 2]
    self.path_pic_previous1 = self.path_of_pic_folder + '/' + self.names_all_pics[self.index_main - 1]
    self.path_pic_next1 = self.path_of_pic_folder + '/' + self.names_all_pics[self.index_main + 1]
    self.ui.label_51.setPixmap(QPixmap(self.path_pic_previous2))  # 给label传入图片
    self.ui.label_56.setText(self.names_all_pics[self.index_main - 2])  # 给label传入图片的文件名
    self.ui.label_52.setPixmap(QPixmap(self.path_pic_previous1))
    self.ui.label_57.setText(self.names_all_pics[self.index_main - 1])
    self.ui.label_53.setPixmap(QPixmap(self.path_pic_main))
    self.ui.label_58.setText(self.names_all_pics[self.index_main])
    self.ui.label_54.setPixmap(QPixmap(self.path_pic_next1))
    self.ui.label_59.setText(self.names_all_pics[self.index_main + 1])
    self.ui.label_55.setPixmap(QPixmap(""))  # 给lab传入空图片
    self.ui.label_60.setText("")  # 给lab传入空字符

3、防止崩溃

  1. 防止在用户未选择图片时点击“上一张”或“下一张”按钮导致程序崩溃
  2. 防止用户在选择图片时中途取消导致程序崩溃
  3. 防止用户在游览到第一张或者最后一张图片时仍然点击“上一张”或“下一张”按钮导致崩溃

对应的解决方案如下:

  1. 加入一个变量来检查是否select_pic函数是否运行过:
def __init__(self):
	# 用于检查是否选择了文件的变量,防止未选择文件就点击“下一张或“上一张”而崩溃
	self.variable_of_chick = 0
	...
def select_pic(self):
    # “选择文件”函数
    self.variable_of_chick = 1  # 已经选择文件,置1
        ...
def next_pic(self):
    # “下一张”函数
    if self.variable_of_chick == 1:  # 检查是否选择过文件
       print("next")
       ...
  1. 检查self.path_pic_main是不是为空:
 def select_pic(self):
        # “选择文件”函数
        self.variable_of_chick = 1  # 已经选择文件,置1
        self.path_pic_main = QFileDialog.getOpenFileName(self, "选择图片", ".", "Images (*.jpg)")[0]  # 选择jpg图片
        if self.path_pic_main:  # 判断路径是否为空,防止因中途取消而崩溃
        	position_of_key = self.path_pic_main.rfind("/")  # 从后往前寻找关键字'/'的位置
  1. 在头尾处禁用对应的按钮:
def situation_2(self):
	...
    self.ui.button_53.setDisabled(True)  # 游览到最后一张时时禁用下一张按钮
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值