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 osclass 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/.tempself.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:returntry:#将多个文件转为列表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)

PyQt 记住上次打开路径相关推荐

  1. Qt 记住上次打开路径

    转载:https://blog.csdn.net/artisans/article/details/44949645?utm_source=blogxgwz9 QSetting是很有用的一个类,它能记 ...

  2. qt记住上次打开的文件路径

    QSettings setting("./Setting.ini", QSettings::IniFormat); //QSettings能记录一些程序中的信息,下次再打开时可以读 ...

  3. 如何让adobe pdf记住上次打开的位置

    打勾

  4. QFileDialog记录上次打开位置

    QFileDialog几个选择文件和文件夹的方法都有一个默认路径参数,如: QString getExistingDirectory(QWidget *parent = nullptr, const ...

  5. 关于找到pycharm中jetbrains-agent更新的打开路径的方法

    事情是这样的,一开始我想着直接在网上找破解版下载就好了,然后下载了一个破解版的pycharm,但是后面发现有学生版可以用,于时就向官网成功申请了一个学生账号,很开心,然后重新安装了一遍pycharm. ...

  6. 文档点击链接无法自动跳转浏览器+google浏览器重启无法继续浏览上次打开的网页

    问题: 某天晚上使用google浏览器发现,重新打开时,之前未关闭的网页自动关闭,并且点击word中的链接不会自动在google浏览器中打开. 解决方法: 按"电脑--设置--应用--默认应 ...

  7. 通过C语言打开路径(计算器)

    一般来说在我们进行c语言编程的时候都是在编译器中进行编译的 引入头文件(主要引入函数库,如stdio.h;数学函数") 但是有时候我们会用到系统(system) 类如#include< ...

  8. FolderBrowserDialog 记录上次打开的路径

    Dim strSavePath As String = "路径"Dim csFolderBrowserDialog As New FolderBrowserDialogIf Dir ...

  9. python 打开路径下文件_Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法...

    在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目 ...

最新文章

  1. VS2015占内存大吗?_手游越来越占内存,80%的手机安装一个大游戏就满了,厂商肉搏...
  2. dec++如何查看机器指令_机器指令到汇编再到高级编程语言!
  3. 「Githug」Git 游戏通关流程
  4. MFC 界面美化 Skinmagic
  5. flowable实战(四)flowable任务实例管理接口
  6. MySQL性能优化的最佳经验
  7. ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
  8. 拖动精灵的三种方法比较
  9. jQuery插件开发之windowScroll
  10. 【Xamarin.Android】探索android的底部导航视图
  11. Zabbix安装记录
  12. java的四种取整方法
  13. android 音效均衡器,App+1 | 不懂均衡器调校也能量身定制,无需折腾的 Android 音效提升工具...
  14. awr报告 解读_Oracle Awr报告_awr报告解读_基础简要信息
  15. sata接口 图解 定义_【sata硬盘三个接口】sata硬盘接口图解_sata硬盘接口电路
  16. 华为应聘进展状态码解析(附加性格测试攻略)
  17. 白话大数据之HDFS
  18. Android逆向分析案例——某点评APP登陆请求数据解密
  19. 6.2 扑克牌游戏(project)
  20. Python中的几种乘法np.dot,np.multiply,*

热门文章

  1. ST MCU Finder:MCU/MPU选型神器
  2. linux下的挂载点和分区是什么关系(详解挂载点)
  3. Debian 12采用 Ubuntu三重缓冲
  4. 十一、多相流模型-VOF
  5. CGroup(控制组)
  6. Android SQLite 数据库存储
  7. LOG的含义 : Mysql 之 binlog介绍
  8. js接收java数组对象_js接收并转化Java中的数组对象的方法
  9. K8S使用Ceph RBD作为后端存储
  10. containsAll和contains