QSettings():如何保存到当前工作目录

2024-04-16

对于可以直接从闪存/笔/USB/跳转/拇指驱动器运行的应用程序,为了从一台机器移动到另一台机器的可移植性,将用户设置存储在记忆棒上与应用程序相同的目录中是有意义的。程序正在运行(而不是 Windows/Mac/Linux 用户或每台机器的系统目录)。

QSettings() 很方便,但是,可以告诉它使用当前工作目录吗?

下面是一个小示例程序,它使用 QSettings() 在每次运行时保持其屏幕位置:

from PySide import QtGui, QtCore
from PySide.QtGui import QTabWidget, QApplication
from PySide.QtCore import QSettings

class AbcApp(QTabWidget):
    def __init__(self):
        super(AbcApp, self).__init__()

        self.settings = QSettings(QSettings.IniFormat,QSettings.SystemScope, '__MyBiz', '__settings')
        self.settings.setFallbacksEnabled(False)    # File only, not registry or or.

        # setPath() to try to save to current working directory
        self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, './__settings.ini')

        # Initial window size/pos last saved
        self.resize(self.settings.value("size", QtCore.QSize(270, 225)))
        self.move(self.settings.value("pos", QtCore.QPoint(50, 50)))

        self.tab = QtGui.QWidget()
        self.textEdit = QtGui.QTextEdit(self.tab)
        self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>')
        self.addTab(self.tab, 'tab1')

    def closeEvent(self, e):
        # Write window size and position to config file
        self.settings.setValue("size", self.size())
        self.settings.setValue("pos", self.pos())

        e.accept()

if __name__ == '__main__':
    app = QApplication('')
    frame = AbcApp()
    frame.show()
    app.exec_()

这个 .ini 文件是因为我现在碰巧在 Windows 上运行而创建的:C:\Documents and Settings\All Users\Application Data__MyBiz__settings.ini.

UserScope 而不是 SystemScope 没有帮助。
'.'代替'./__settings.ini'没用,设置Path()基本没有效果。
也尝试过这个无济于事:

filepath = os.getcwd() + '/__settings.ini'
self.settings.setPath(QSettings.IniFormat,QSettings.SystemScope, filepath)

参考:https://doc.qt.io/archives/qt-4.8/qsettings.html https://doc.qt.io/archives/qt-4.8/qsettings.html http://www.pyside.org/docs/pyside/PySide/QtCore/QSettings.html http://www.pyside.org/docs/pyside/PySide/QtCore/QSettings.html

虽然我不知道如何适应 PySide,但还是有希望的:
http://www.qtcentre.org/archive/index.php/t-35287.html http://www.qtcentre.org/archive/index.php/t-35287.html


更新:alexisdm 的答案有效,所以现在是更新的代码:

from PySide import QtGui, QtCore
from PySide.QtGui import QTabWidget, QApplication
from PySide.QtCore import QSettings

class AbcApp(QTabWidget):
    def __init__(self):
        super(AbcApp, self).__init__()

        self.settings = QSettings('settings.ini', QSettings.IniFormat)
        self.settings.setFallbacksEnabled(False)    # File only, no fallback to registry or or.

        # Initial window size/pos last saved if available
        self.resize(self.settings.value('size', QtCore.QSize(270, 225)))
        self.move(self.settings.value('pos', QtCore.QPoint(50, 50)))

        self.tab = QtGui.QWidget()
        self.textEdit = QtGui.QTextEdit(self.tab)
        self.textEdit.setHtml('<font color=grey>[QTextEdit area]</font><p><center><font color=blue size=4><b>Allo Woyld</b></font></center>')
        self.addTab(self.tab, 'tab1')

    def closeEvent(self, e):
        self.settings.setValue('size', self.size())
        self.settings.setValue('pos', self.pos())
        e.accept()

if __name__ == '__main__':
    app = QApplication('')
    frame = AbcApp()
    frame.show()
    app.exec_()

您可以使用该重载class QSettings(fileName, format[, parent=None])像这样:

self.settings = QSettings("__settings.ini", QSettings.IniFormat)

如果路径是相对路径,则文件将已在当前工作目录中打开,但这可能不是您想要的。
您可以尝试其中一种这些答案 https://stackoverflow.com/q/6667460/894321使用脚本所在的目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QSettings():如何保存到当前工作目录 的相关文章

  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 从 std::string 中提取(第一个)UTF-8 字符

    我需要使用一个PHP mb strtoupper 函数的 C 实现 http www zedwood com article cpp utf8 mb strtoupper function模仿维基百科的行为 我的问题是 我只想喂一个sing
  • 如何在 Android Canvas 上使用大量图元绘制游戏

    我在游戏的每一帧中画了很多线条矩形 这是老式手持电子游戏的娱乐 那些具有用于主游戏的原始点阵显示和用于文本或某些图像的自定义图像的内容 我在虚拟点阵屏幕上有 20x20 大 像素 我还在屏幕上绘制了一些 7 段显示和其他一些东西 根据Tra
  • 更改“corrplot()”中有意义的 pch 符号的位置?

    下面的脚本生成一个图 其中表示重要性的 pch 符号与 r 值重叠 如何移动 pch 符号的位置以使它们不与这些值重叠 library corrplot ex mat lt matrix c 1 00 0 46 0 75 1 00 0 46
  • Fluent NHibernate BinaryBlobType

    今天我正在研究 MySQL 数据库 我不知道如何将 Byte 映射到 BLOB 列 我的表看起来是这样的 CREATE TABLE images Id INT NOT NULL AUTO INCREMENT imgText VARCHAR
  • 函数数组的替代方案?

    我正在编写一个应用程序 php 它需要一个很长的列表相似但不同的功能 由一组按键调用 functions do this gt function does this do that gt function does that etc 我选择
  • 使用 Java API 制作 ePub

    我对 ePub 格式比较陌生 但如果我理解得很好 以编程方式从 XHTML 或 PDF 内容开始制作 ePub 可能意味着 选择 HTML 或 XHTML 内容并使用 XHTML 验证器验证它们 或使用 Tydy 清理它们 选择要插入 eP
  • 在 jQuery datepicker buttonImage 属性中引用 Bootstrap 图标?

    我应该为 jQuery 日期选择器使用什么值buttonImage属性 我想将 Bootstrap 日历图标与 jQuery 日期选择器一起使用 当像这样引用时 我可以在 html 页面中使用图标图像 i class icon calend
  • Identity 3 SignInManager.PasswordSignInAsync() 不返回任何结果

    我正在使用 Identity 3 0 创建 Web 应用程序 但 SignInManager PasswordSignInAsync 方法有问题 我像在文档中一样使用它 但它不会返回任何内容 应用程序代码就停在那里 这是我的控制器代码 pu
  • pygame.display.update 更新整个屏幕

    我正在创建一个分屏多人游戏 我首先在左侧绘制第一个玩家 宇宙飞船 燃烧弹 背景中的星星 以半速滚动 最后是背景 然后为第一个玩家更新屏幕的第一部分 然后我在屏幕的另一部分为第二个玩家做同样的事情 但大多数图像在两个半屏幕上重叠 见下图 所以
  • 协助创建名为“(FundingResource(Balance))”的子过程 Visual Basic

    我正在开发一个由三个事件过程组成的程序 换句话说 三个不同的任务按钮 选择媒体和估计资金 添加机构 和 生成报告 当点击 选择媒体和预估资金 按钮时 会弹出输入框并要求用户输入余额 该余额将通过 余额 余额 1 利率 的公式计算 用户输入不
  • Python 的“open()”针对“文件未找到”抛出不同的错误 - 如何处理这两个异常?

    我有一个脚本 提示用户输入文件名 要打开的文件的文件名 如果当前目录中不存在该文件 则会再次提示用户 这是简短的版本 file input Type filename try fileContent open filename r exce
  • 为什么 Ruby 2.0 优化后 `send` 会失败?

    为什么这不起作用 module StringRefinement refine String do def bar length end end end using StringRefinement abcdefghijklmnopqrst
  • 从 SamlResponse 读取继电器状态

    我们将 SustainSys Saml2 与 IdentityServer4 结合使用 我们在这个问题中概述了以下工作流程收到 OneLogin 的 SAML 响应后如何维护 returnurl https stackoverflow co
  • 带下拉列表的循环引用

    MS 中可以吗 Excel 或 VBA 具有带下拉列表的循环引用 这就是我想要的 我想在两张表 表 1 表 2 上生成一个下拉列表 其中显示 完整 或 不完整 如果我将工作表 1 从完整更改为不完整 我希望工作表 2 说同样的事情 但我也希
  • 在 C++ 中迭代链表比在 Go 中慢

    编辑 收到一些反馈后 我创建了一个新的例子 https stackoverflow com questions 50282452 iterating over linked list in c is slower than in go wi
  • 如何从投影类型推断正确的类型参数?

    我在让 Scala 从类型投影推断正确的类型时遇到一些麻烦 考虑以下 trait Foo type X trait Bar extends Foo type X String def baz F lt Foo x F X Unit 然后以下
  • ASP.NET MVC Html.RadioButton 异常

    我的页面上有一个简单的单选按钮列表 我在视图中使用以下内容进行渲染
  • 连接两列值pandas

    我有一个数据框数据 Cluster OsId BrowserId PageId VolumePred ConversionPred 255 7 11 17 1149582 4 0 607 18 99 16 917224 8 0 22 0 1
  • Android:ListView圆角被列表项隐藏

    我有这个列表视图元素
  • QSettings():如何保存到当前工作目录

    对于可以直接从闪存 笔 USB 跳转 拇指驱动器运行的应用程序 为了从一台机器移动到另一台机器的可移植性 将用户设置存储在记忆棒上与应用程序相同的目录中是有意义的 程序正在运行 而不是 Windows Mac Linux 用户或每台机器的系