繁体   English   中英

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

[英]In PyQt, how can I save the items and selected item in a combobox

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

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

我尝试使用泡菜,但显然收到与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'模块,但是这一切看起来都很混乱。 因此,在我走错路之前,我只是想知道做这种事情的某种标准方法是-保存填充的元素/选项。

干杯,

看来您想要做的是腌制QComboBox实例,因此,您遇到的问题实际上与pickle关系不大,而更多的是您无法使用它来保存(浸入包装的)Qt小部件。 。

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

但是,请注意,如果组合框中的可选项目集可以在关闭窗口和重新打开窗口之间进行更改,在这种情况下,索引将关闭,否则“ selected”字符串可能引用了不属于该项目的项目组合框的内容。

编辑:

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

就个人而言,我要么使用酸洗(协议0使之在Python版本之间兼容,而且在某种程度上是人类可读的),要么使用更专业的文件格式以使其可被其他应用程序读取。 如果您的应用程序仅适用于Windows,则还可以考虑将其保存到注册表而不是文件中,请参见此答案以获取示例。

您可以简单地转储选定的组合框索引,然后在重新加载/重新启动应用程序时加载它。 语法可能像这样

pickle.dump(str(self.WordCardsFieldSelector.currentIndex()), open( "save.p", "wb" ) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM