pyqt5安装使用(恢复应用程序设置)
pyqt5安装使用(恢复应用程序设置)当用户保存文件时,就可以把当前文件名插入到最近文件列表的开头;一旦该列表长度超过上限,就删除最后一个文件:下面介绍recent file 列表的更新:app.setOrganizationName("My organization") app.setOrganizationDomain("http://www.My-domain.cn") app.setApplicationName("myApp") 然后在应用程序的任何地方想要声明一个Qsettings类型的变量,便不需要书写两个参数了,直接用下面的语句就可以了:settings = Qsettings() 保存设置用 settings.setValue(设置名 变量)即可。一般在通过在主窗口的CloseEvent方法中保存 最终的setting。settings = QSettings() settings.setValue("re
用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小,位置,一些别的设置,还有一个经常用的,就是recent files 等等,这些都可以通过Qsettings类来实现。
这些 settings一般都是存在系统里的,比如 windows一般都写在系统注册表或者写 INI文件,mac系统一般都在 XML文件里。而 Qsettings就是提供了一种方便的方法来存储和恢复应用程序的settings。
QSetting 来自PyQt5.QtCore模块,使用之前需导入该模块。当我们创建一个 Qsettings的对象时,我们需要传递给它两个参数,第一个是你公司或者组织的名称,第二个事你的应用程序的名称。比如:
Qsettings(“MS” ”MyApp”)
假如我们在应用程序中多次要用到Qsettings,为了简单起见,我们可以在主程序中先如下声明:
app.setOrganizationName("My organization") app.setOrganizationDomain("http://www.My-domain.cn") app.setApplicationName("myApp")
然后在应用程序的任何地方想要声明一个Qsettings类型的变量,便不需要书写两个参数了,直接用下面的语句就可以了:
settings = Qsettings()
保存设置用 settings.setValue(设置名 变量)即可。一般在通过在主窗口的CloseEvent方法中保存 最终的setting。
settings = QSettings() settings.setValue("recentFiles" self.recentFiles) settings.setValue("MainWindowGeometry" self.saveGeometry())#保存主窗口尺寸和位置 #也可以self.size().self.pos()分别 返回尺寸和位置 以分开保存 #保存状态,如工具条的位置,停靠窗口的的位置和大小等 settings.setValue("MainWindowState" self.saveState())
恢复设置用 变量=settings.value(设置名)即可,一般写在初始化方法中。比如:
下面介绍recent file 列表的更新:
当用户保存文件时,就可以把当前文件名插入到最近文件列表的开头;一旦该列表长度超过上限,就删除最后一个文件:
if self.fileName not in self.recentFiles: self.recentFiles.insert(0 self.fileName) if len(self.recentFiles) > self.maxNumRecentFiles: self.recentFiles.pop()
有了最近文件列表,就可以动态的显示文件菜单。
首先,创建一系列文件相关动作和退出动作:
self.fileMenuActions = [self.fileNewAction self.fileOpenAction self.fileSaveAction self.fileSaveAsAction] self.exitAction = self.createAction("E&xit" icon="" checkable=False slot=self.close tip="退出" shortcut=QKeySequence.Close)
接着,在创建文件菜单时只创建一个空的菜单,不添加任何动作,并将该菜单的aboutToShow 信号连接到 用于动态显示各文件相关动作的槽。aboutToShow信号在菜单被点击(或者用快捷键调用)时发射。在此之前,文件菜单里面的内容并不存在。
#文件菜单 self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.aboutToShow.connect(self.updateFileMenu)#动态显示菜单
然后,定义这个用于动态显示各文件相关动作的槽:
最后 ,定义各最近文件动作的槽: