第一版:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import sys,os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *#QCoreApplication
from PyQt5.QtGui import *#QIcon,QPalette,QBrush,QPixmap,QColor
def chdir(path):
# 引入模块
import os
# 去除首位空格
path = path.strip()
# 去除尾部 \ 符号
path = path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists = os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
print(path + ' 目录不存在')
return False
else:
# 如果目录存在则不创建,并提示目录已存在
print(path + ' 目录已存在')
return True
#读取备份文件列表
def read_filename(filePath,nums):
import os
name = os.listdir(filePath)#获取filepath的文件列表
print(name)
return name
def scale_image(image_path,nums):
# 创建一个QPixmap对象
pixmap = QPixmap(image_path)
print(pixmap.width(), pixmap.height())
scaled_pixmap = pixmap.scaled(int(pixmap.width()/nums), int(pixmap.height()/nums), Qt.KeepAspectRatio)
return scaled_pixmap
class showpic(QDialog):
def __init__(self):
super().__init__()
self.names=[]
self.num=0
for i in os.walk("pics"):#遍历图片文件夹读取训练集
print(i) # ('.', ['ee', 'pic'], ['a.jpeg', 'a.jpg', 'show.py']) (检测文件夹,检测文件夹内包含的所有文件夹,检测文件夹内包含的所有文件)
if i[2]!=[]:
for j in i[2]:
print(j.split('.'))
if j.split('.')[1]=='jpg' or j.split('.')[1]=='jpeg' \
or j.split('.')[1]=='png' or j.split('.')[1]=='bmp' \
or j.split('.')[1]=='png' :
self.names.append(i[0]+'/'+j)
print(self.names)
self.initUI()
def initUI(self):
hbox = QHBoxLayout(self)
# 创建一个QLabel来显示图像
self.label = QLabel(self)
# 将QLabel设置为填充布局
self.label.setScaledContents(True)
# 在QLabel上显示图像
self.label.setPixmap(scale_image(self.names[self.num],2))# 在label上显示图片
hbox.addWidget(self.label)
self.setLayout(hbox)
self.move(300, 20)
self.setWindowTitle('Display Image')
self.show()
def keyPressEvent(self, e):
# 重写键盘按下事件
if e.key() == Qt.Key_Escape: # 检查按下的是否是Esc键
self.close()
def mousePressEvent(self, e):
if e.buttons() == Qt.MouseButton.MidButton:
print("mid")
elif e.buttons() == Qt.MouseButton.LeftButton:
print("left")
self.num=self.num-1
if self.num<0:
self.num=0
elif e.buttons() == Qt.MouseButton.RightButton:
print("right")
self.num=self.num+1
# print(self.num,len(self.names))
if self.num>len(self.names)-1:
self.num=len(self.names)-1
# 加载图像
self.label.setPixmap(scale_image(self.names[self.num],2))
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.names=[]
def initUI(self):
pre = QPushButton('aaa', self)
pre.clicked.connect(self.pre_buttonClicked)
pre.resize(pre.sizeHint())
pre.move(80, 60)
self.setGeometry(600, 200, 250, 120)
self.setWindowTitle(' ')
self.show()
self.setWindowIcon(QIcon('logo.png'))
def pre_buttonClicked(self):
window = showpic()
window.exec_()
def closeEvent(self, event):
reply = QMessageBox.question(self, '提示', "确定退出吗?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第二版:
# coding=utf-8
import sys,os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *#QCoreApplication
from PyQt5.QtGui import *#QIcon,QPalette,QBrush,QPixmap,QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.names=[]
self.num=0
self.initUI()
def initUI(self):
for i in os.walk("pic"):#遍历图片文件夹读取训练集
print(i) # ('.', ['ee', 'pic'], ['a.jpeg', 'a.jpg', 'show.py']) (检测文件夹,检测文件夹内包含的所有文件夹,检测文件夹内包含的所有文件)
if i[2]!=[]:
for j in i[2]:
print(j.split('.'))
if j.split('.')[1]=='jpg' or j.split('.')[1]=='jpeg' \
or j.split('.')[1]=='png' or j.split('.')[1]=='bmp' \
or j.split('.')[1]=='png' :
self.names.append(i[0]+'/'+j)
print(self.names)
hbox = QHBoxLayout(self)
self.lbl = QLabel(self)
pixmap = QPixmap("a.png") # 按指定路径找到图片
# pixmap = pixmap.scaled(int(pixmap.width()/2), int(pixmap.height()/2), Qt.KeepAspectRatio)
self.lbl.setPixmap(pixmap) # 在label上显示图片
# self.lbl.setScaledContents(True) # 让图片自适应label大小
hbox.addWidget(self.lbl)
self.setLayout(hbox)
self.setGeometry(500, 100, 600, 600)
self.setWindowTitle('test_1')
self.show()
def keyPressEvent(self, e):
# 重写键盘按下事件
if e.key() == Qt.Key_Escape: # 检查按下的是否是Esc键
self.close()
def mousePressEvent(self, e):
if e.buttons() == Qt.MouseButton.MidButton:
print("mid")
elif e.buttons() == Qt.MouseButton.LeftButton:
print("left")
self.num=self.num-1
if self.num<0:
self.num=0
elif e.buttons() == Qt.MouseButton.RightButton:
print("right")
self.num=self.num+1
# print(self.num,len(self.names))
if self.num>len(self.names)-1:
self.num=len(self.names)-1
# self.setGeometry(500, 100, 600, 600)
# self.lbl.setPixmap(QPixmap(""))#移除label上的图片
# 加载图像
hbox = QHBoxLayout(self)
# lbl = QLabel(self)
pixmap = QPixmap(self.names[self.num]) # 按指定路径找到图片
pixmap = pixmap.scaled(int(pixmap.width()/1), int(pixmap.height()/1), Qt.KeepAspectRatio)
self.lbl.setPixmap(pixmap) # 在label上显示图片
self.lbl.setScaledContents(True) # 让图片自适应label大小
hbox.addWidget(self.lbl)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第三版:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import sys,os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *#QCoreApplication
from PyQt5.QtGui import *#QIcon,QPalette,QBrush,QPixmap,QColor
def chdir(path):
# 引入模块
import os
# 去除首位空格
path = path.strip()
# 去除尾部 \ 符号
path = path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists = os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
print(path + ' 目录不存在')
return False
else:
# 如果目录存在则不创建,并提示目录已存在
print(path + ' 目录已存在')
return True
#读取备份文件列表
def read_filename(filePath,nums):
import os
name = os.listdir(filePath)#获取filepath的文件列表
print(name)
return name
def scale_image(image_path,nums):
# 创建一个QPixmap对象
pixmap = QPixmap(image_path)
print(pixmap.width(), pixmap.height())
scaled_pixmap = pixmap.scaled(int(pixmap.width()/nums), int(pixmap.height()/nums), Qt.KeepAspectRatio)
return scaled_pixmap
class showpic(QDialog):
def __init__(self):
super().__init__()
self.names=[]
self.num=0
self.initUI()
def initUI(self):
for i in os.walk("pic"):#遍历图片文件夹读取训练集
print(i) # ('.', ['ee', 'pic'], ['a.jpeg', 'a.jpg', 'show.py']) (检测文件夹,检测文件夹内包含的所有文件夹,检测文件夹内包含的所有文件)
if i[2]!=[]:
for j in i[2]:
print(j.split('.'))
if j.split('.')[1]=='jpg' or j.split('.')[1]=='jpeg' \
or j.split('.')[1]=='png' or j.split('.')[1]=='bmp' \
or j.split('.')[1]=='png' :
self.names.append(i[0]+'/'+j)
print(self.names)
hbox = QHBoxLayout(self)
self.lbl = QLabel(self)
pixmap = QPixmap("a.png") # 按指定路径找到图片
# pixmap = pixmap.scaled(int(pixmap.width()/2), int(pixmap.height()/2), Qt.KeepAspectRatio)
self.lbl.setPixmap(pixmap) # 在label上显示图片
# self.lbl.setScaledContents(True) # 让图片自适应label大小
hbox.addWidget(self.lbl)
self.setLayout(hbox)
self.setGeometry(500, 100, 600, 600)
self.setWindowTitle('test_1')
self.show()
def keyPressEvent(self, e):
# 重写键盘按下事件
if e.key() == Qt.Key_Escape: # 检查按下的是否是Esc键
self.close()
def mousePressEvent(self, e):
if e.buttons() == Qt.MouseButton.MidButton:
print("mid")
elif e.buttons() == Qt.MouseButton.RightButton:
print("right")
self.num=self.num-1
if self.num<0:
self.num=0
elif e.buttons() == Qt.MouseButton.LeftButton:
print("left")
self.num=self.num+1
# print(self.num,len(self.names))
if self.num>len(self.names)-1:
self.num=len(self.names)-1
# 加载图像
hbox = QHBoxLayout(self)
# lbl = QLabel(self)
pixmap = QPixmap(self.names[self.num]) # 按指定路径找到图片
pixmap = pixmap.scaled(int(pixmap.width()/1), int(pixmap.height()/1), Qt.KeepAspectRatio)
self.lbl.setPixmap(pixmap) # 在label上显示图片
self.lbl.setScaledContents(True) # 让图片自适应label大小
hbox.addWidget(self.lbl)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.names=[]
def initUI(self):
pre = QPushButton('aaa', self)
pre.clicked.connect(self.pre_buttonClicked)
pre.resize(pre.sizeHint())
pre.move(80, 60)
self.setGeometry(600, 200, 250, 120)
self.setWindowTitle(' ')
self.show()
self.setWindowIcon(QIcon('logo.png'))
def pre_buttonClicked(self):
window = showpic()
window.exec_()
# self.names=[]
# for i in os.walk("pics"):#遍历图片文件夹读取训练集
# print(i)
# if i[2]!=[]:
# for j in i[2]:
# self.names.append(j)
# print(self.names)
def closeEvent(self, event):
reply = QMessageBox.question(self, '提示', "确定退出吗?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())