1. 首页
  2. IT资讯

PyQt5 恢复应用程序设置

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

原文始发于:PyQt5 恢复应用程序设置

主题测试文章,只做测试使用。发布者:玩家L-,转转请注明出处:http://www.cxybcw.com/10638.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code