def openimage(self):
pt,type = QtWidgets.QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)")
self.dir_path = os.path.dirname(pt)#获取选取图片当前目录
dir_list = os.listdir(self.dir_path)
img_list = []
for dir in dir_list:
suffix_list = ['jpg' ]
if dir.split('.')[-1].lower() in suffix_list:
img_list.append(dir)
self.img_index_dict = dict()
for i, d in enumerate(img_list):
self.img_index_dict[i] = d
self.current_index = 0 # 当前的图像索引
# 当前图片文件路径
self.current_filename = os.path.join(
self.dir_path, self.img_index_dict[self.current_index]
)
image = QtGui.QImage(self.current_filename)
self.img_width = image.width() # 图片宽度
self.img_height = image.height() # 图片高度
self.img_scale = 1
self.image = image.scaled(self.img_width * self.img_scale, self.img_height * self.img_scale)
# 在img_view控件中显示图像
self.label.setPixmap(QtGui.QPixmap.fromImage(self.image))
# 切换下一张
def next(self):
self.current_index += 1
if self.current_index in self.img_index_dict.keys():
# 当前图片文件路径
self.current_filename = os.path.join(
self.dir_path, self.img_index_dict[self.current_index]
)
# 实例化一个图像
image = QtGui.QImage(self.current_filename)
self.img_width = image.width() # 图片宽度
self.img_height = image.height() # 图片高度
self.img_scale = 1
self.image = image.scaled(self.img_width * self.img_scale, self.img_height * self.img_scale)
# 在img_view控件中显示图像
self.label.setPixmap(QtGui.QPixmap.fromImage(self.image))
else:
self.current_index -= 1
QtWidgets.QMessageBox.information(
self, '提示', '这是最后一张图片!',
QtWidgets.QMessageBox.Ok
)
#切换上一张图片
def front(self):
self.current_index -= 1
if self.current_index in self.img_index_dict.keys():
# 当前图片文件路径
self.current_filename = os.path.join(
self.dir_path, self.img_index_dict[self.current_index]
)
# 实例化一个图像
image = QtGui.QImage(self.current_filename)
self.img_width = image.width() # 图片宽度
self.img_height = image.height() # 图片高度
self.img_scale = 1
self.image = image.scaled(self.img_width * self.img_scale, self.img_height * self.img_scale)
# 在img_view控件中显示图像
self.label.setPixmap(QtGui.QPixmap.fromImage(self.image))
else:
self.current_index += 1
QtWidgets.QMessageBox.information(
self, '提示', '图片列表到顶了!',
QtWidgets.QMessageBox.Ok
)
def add_list(self):
layout = QVBoxLayout()
listView = QListView() # 创建一个listview对象
listmodel = QStringListModel() # 创建模型
listView.setFixedSize(150, 500)
self.qList = [] # 建立一个列表
for i in os.listdir(r"C:\Users\Administrator\Desktop\imge"):
self.qList.append(r"C:\Users\Administrator\Desktop\imge"+ "\\" + i) #打开文件路径
listmodel.setStringList(self.qList) # 将数据设置到model
listView.setModel(listmodel) # 绑定 listView 和 model
layout.addWidget(listView) # 将list view添加到layout
self.setLayout(layout) # 将lay 添加到窗口
listView.clicked.connect(self.clicked)
def clicked(self,item):
path = self.qList[item.row()] #获取当前文件路径
image = QtGui.QImage(path)
self.img_width = image.width() # 图片宽度
self.img_height = image.height() # 图片高度
self.img_scale = 1
self.image = image.scaled(self.img_width * self.img_scale, self.img_height * self.img_scale)
# 在img_view控件中显示图像
self.label.setPixmap(QtGui.QPixmap.fromImage(self.image))
结合自己学习两周的pyqt5很多东西还是没有弄懂,所以还有些地方有bug,总之还是得多去思考!!!