PYQT5 按键 弹出新窗口显示图片

第一版:

#!/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_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆程序小黑★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值