记录自己学习PYQT5一些记录

记录自己学习pyqt5遇到的一些问题

1. 实现本地读取图片
    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))
2. 实现在读取图片目录下进行上下切换图片
    # 切换下一张
    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
            )
3. 创建列表以列表形式读取本地图片
    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,总之还是得多去思考!!!

你可能感兴趣的:(python,pyqt5,python,pyqt)