IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PyQt getOpenFileNames记录上一次目录(历史目录) -> 正文阅读

[C++知识库]PyQt getOpenFileNames记录上一次目录(历史目录)

PyQt getOpenFileNames记录上一次目录(历史目录)

文件对话窗

功能函数
打开单个文件QFileDialog.getOpenFileName()
打开多个文件QFileDialog.getOpenFileNames()
打开文件夹QFileDialog.getExistingDirectory()
文件保存QFileDialog.getSaveFileName()

getOpenFileNames

getOpenFileNames函数表示打开多个文件

QtWidgets.QFileDialog.getOpenFileNames(parent=None, caption='', directory='', filter='', initialFilter='', options, QFileDialog_Options=None, QFileDialog_Option=None, *args, **kwargs)
参数描述
parent指定父控件
caption对话窗的标题
directory表示对话窗显示的目录,’‘表示程序运行的目录,’/'表示根目录
filter后缀名过滤器,比如可以只显示txt文件或者mp3文件
selectedFilter默认选择的过滤器
options对话框的参数设定

思路

控制第三个参数就可以让程序记录上一次目录
因此可以将当前文件的路径保存到一个配置文件中,下次打开程序就读取配置文件获取上一次的路径

保存配置可以使用QSettings(比较方便),另外创建QSettings后要设置编码为UTF8,否则就会出现乱码问题

代码

#coding:utf-8
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import os

class MainUi(QtWidgets.QMainWindow):

	# 界面初始化
    def __init__(self, parent=None):
		# 导入文件按钮
        self.button_load_file = QtWidgets.QPushButton('选择文件', self.main_widget)
        # 绑定事件
        self.button_load_file.clicked.connect(self.button_load_file_clicked)

    	# 创建QSettings,配置文件是tmp/.temp
		self.setting = QSettings('tmp/.temp', QSettings.IniFormat) 
		
		# 设置UTF8编码,反正保存配置文件时出现乱码
		self.setting.setIniCodec('UTF-8') 
		
		# 读取上一次的目录路径
		self.last_path = self.setting.value('LastFilePath')
		
	 	# 如果字符串为空,将路径索引到根目录
		if self.last_path is None:
		    self.last_path = '/' # 根盘符

	# 点击打开文件
    def button_load_file_clicked(self)# 设置过滤器
        format_str = ' '.join(['*.pdf']) 
        
        # 弹出打开文件的对话窗
        fname, _ = QtWidgets.QFileDialog.getOpenFileNames(self, "select pdf", self.last_path, "PDF files (%s)" % (format_str,))
        
        # 如果文件为空,取消后续指令
        if fname is None or len(fname) <= 0:
            return
            
        try:
        	#将多个文件转为列表
            self.file_path_list = [fname_item for fname_item in fname] 
            
            # 保存当前目录的路径到配置文件中,另外如果不存在'tmp/.temp'文件该函数会自动创建
            self.setting.setValue('LastFilePath', os.path.dirname(self.file_path_list[0]))
            
             # 将路径设为''程序会使用上一次的路径
            self.last_path = ''
            
        except Exception as e:
        	# 发生异常,弹窗警告 
            msg = QtWidgets.QMessageBox.warning(self, "Warning", "PDF打开失败%s" % e, buttons=QtWidgets.QMessageBox.Ok, defaultButton=QtWidgets.QMessageBox.Ok)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:28:13  更:2021-07-25 11:28:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 23:03:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码