在 PyQt 中,如何将项目和所选项目保存在组合框中

2024-01-12

我填充组合框,用户选择其中一个选项。然后他们关闭一切。

稍后,用户可能会再次打开窗口,要求他们重新输入并重新选择选项会很乏味,所以我想“加载”它们。

我尝试使用 pickle,但显然出现与 Qt 相关的错误:

self.WordCardsFieldSelector = QtGui.QComboBox()

#Fails when trying to do this dump
pickle.dump( self.WordCardsFieldSelector, open( "save.p", "wb" ) )


TypeError: the sip.wrapper type cannot be instantiated or sub-classed

我也看过“ConfigParser”模块,但这一切似乎都很令人困惑。因此,在我走上错误的道路之前,我只是想知道执行此类操作的标准方法是什么 - 保存填充的元素/选项。

Cheers,


看来你想做的是腌制QComboBox实例,所以你遇到的问题实际上与pickle更重要的是,您不能使用它来保存(sip-wrapped)Qt 小部件。

根据组合框的填充方式,最好保存所选项目或所选字符串的索引,并在(重新)打开窗口时重新选择该项目。

但要小心,如果组合框中的可选项目集可以在关闭和重新打开窗口之间发生变化,在这种情况下,索引将关闭,或者“选定”字符串可能引用不属于其中的项目组合框不再。

EDIT:

我不确定是否有一个单一的“方法”可以涵盖所有用例,您必须考虑安全性、兼容性(跨 Python、Qt 和应用程序的较新版本)、与其他程序的互操作性以及可能的其他因素决定走哪条路。

就我个人而言,我要么使用 pickling(协议 0 使其在 Python 版本之间兼容并且在某种程度上具有人类可读性),要么使用更专门的文件格式以使其可由其他应用程序读取。如果您的应用程序仅适用于 Windows,您还可以考虑保存到注册表而不是文件,请参阅这个答案 https://stackoverflow.com/a/17646175/897968举个例子。

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

在 PyQt 中,如何将项目和所选项目保存在组合框中 的相关文章

随机推荐

  • .NET 矩形数组:如何循环访问?

    基本上你有两种方法可以做到这一点 for int x 0 x lt UPPER X x for int y 0 y lt UPPER Y y arr1 x y get value arr2 y x get value 唯一的区别是在内循环中
  • 用于过滤项目列表的 Lambda 表达式

    我有一个项目列表列表 我想知道是否有人可以帮助我使用 lambda 表达式来过滤此列表 我的清单如下 List
  • 为什么 PendingIntent 不发回我的 Intent 自定义 Extras 设置?

    这个问题在某种程度上与我寻找的问题有关在 startActivityForResult 中获取额外内容 https stackoverflow com questions 2859831 startactivityforresult and
  • iPhone - JSON 解析中的转义字符问题

    I am using objective C JSON parsing library and facing some issue My web service returns the JSON response My Parser fai
  • 使用 Angular 和 Express 登录用户的正确方法是什么?

    我正在构建一个简单的网站 我想让用户使用 Facebook 登录 然后根据他们是否登录显示包含自定义项目的页面 即 如果未登录 它会显示一些信息 但如果登录 它会根据用户信息显示其他信息 我正在使用 Passportjs Facebook
  • 在 Tomcat 中的上下文之间转发请求

    我希望能够使用 Tuckey URLRewrite 过滤器在 Tomcat 中进行跨上下文请求转发 例如 我希望能够使用 SEO 用户友好的 URL 路由传入请求 例如http example com group elements 3002
  • C# try {} catch {}

    您好 感谢您的阅读 我是编程以及 C 和套接字编程的新手 在我的代码中 我尝试捕获问题以在我的应用程序中提供容错能力 下列 catch ArgumentNullException e OnNetworkEvents eventArgs ne
  • SQL Server 2016 始终加密已发布 IIS 超时

    当我尝试将我的 asp net mvc 应用程序发布到我的本地 pc iis 并启用 始终加密 时 我遇到了奇怪的问题 当我尝试在本地 IIS 非快速 上使用 EF6 访问数据库时 我的应用程序保持超时 但是 如果我尝试使用 Visual
  • JavaScript 预加载图像

    我正在尝试预加载图像 以下代码有效 document ready function member photos img each function var id this attr data id var file this attr da
  • php中if条件满足后如何重定向到另一个页面? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我使用了 php 代码来重定向到另一
  • 输入元素中 textContent 的用途是什么?

    在 DOM 中提供一个输入元素 它确实有一个textContent财产连同value 众所周知 输入的值就是文本框中显示的值 并且该元素不能有任何子元素 即
  • 使用Java流合并一对“int”数组[重复]

    这个问题在这里已经有答案了 这一页 https www javatpoint com how to merge two arrays in java展示了如何组合两个数组Integer对象放入数组中Object对象 Integer firs
  • Microsoft SQL Server Express:不再支持此版本的安装程序

    我正在尝试安装 Microsoft SQL Server 2019 Express 但我不断遇到上述错误消息 我最初在尝试安装时遇到了一条单独的错误消息 无法下载所需的文件 我按照以下线程中的说明进行操作 这解决了最初的问题 但现在出现了新
  • 我如何扩展 boost Spirit 语法

    问题是我编写了一个对某项任务有用的语法 但现在 任务发生了变化 我需要定义新的规则 但我不想修改我已有的语法而不是我想要的 喜欢创建一个新的语法 使用我现有的语法 无需代码 重复 所以我只需要定义我需要的新规则 我尝试过一些东西 像这样 但
  • 如何删除Windows中的长路径。

    将项目导入 Eclipse 时 它 以某种方式开始创建目录的递归版本 现在 当我尝试删除任何内容时 我收到消息 您指定的文件名太长 我无法从命令 shell 中删除它 我无法从资源管理器中删除它 我不能用它做任何事 我不知道 Eclipse
  • ss 命令显示 TIME_WAIT 而不是 CLOSE_WAIT,这在逻辑上不符合

    我试图理解 TIME WAIT 和 CLOSE WAIT 我已经通过 Chrome 控制台打开了一个套接字连接 该连接连接到本地运行的 Java WebSocket 服务器 然后将其关闭 var webSocket new WebSocke
  • 将gradle临时目录设置为SSD

    我正在使用带有 gradle 的 android studio 当我构建应用程序时 我注意到旋转硬盘工作量很大 所以我查看并看到 gradle 正在将临时文件写入变量定义的目录 在 Windows 8 1 中 TEMP or TMP在我的用
  • 从 Android 上传文件到 wowza

    我已经安装了 wowza 服务器并且能够使用 android 中的视频视图从客户端播放文件 现在我必须录制视频并且必须将文件上传到 wowza 服务器 如何编写服务器端应用程序 以及如何从 android 代码连接它 有人有这方面的经验吗
  • Stripe Connect PaymentIntent 错误:没有这样的 payment_intent

    我在 API 中使用 stripe connect 并且我想更新和处理现有的 paymentIntent 使用NodeJS stripe包创建 paymentIntent 成功 const paymentIntent await strip
  • 在 PyQt 中,如何将项目和所选项目保存在组合框中

    我填充组合框 用户选择其中一个选项 然后他们关闭一切 稍后 用户可能会再次打开窗口 要求他们重新输入并重新选择选项会很乏味 所以我想 加载 它们 我尝试使用 pickle 但显然出现与 Qt 相关的错误 self WordCardsFiel