如何在pyqt中正确保存和恢复复选框状态

1 投票
1 回答
1432 浏览
提问于 2025-04-17 20:51

我在关闭应用程序时保存了我的界面复选框的状态,并在打开应用程序时恢复这个状态。

这是我在关闭事件中调用的代码:

settings.setValue("checkBoxReplace", self.ui.checkBoxReplace.checkState());

这是我在界面初始化时调用的代码:

value = settings.value("checkBoxReplace").toInt()[0]   # ??? works, but is there a more proper way?
self.ui.checkBoxReplace.setCheckState(value)   # restore checkbox

以上的调用是有效的,但我在想我是不是正确读取了存储的QVariant?我用的是toInt,但它返回了两个值。

1 个回答

1

正如之前提到的,在PyQt中,QVariant.toInt会返回一个包含值的元组,还有一个标志位用来表示转换是否成功。所以你的代码其实是完全正确的。

不过,值得一提的是,你可以通过在程序开始时添加以下内容,完全避免这些QVariant的转换:

import sip
sip.setapi('QVariant', 2)
from PyQt4 import QtCore, QtGui

这样一来,任何返回QVariant的Qt方法都会返回一个Python类型(这只适用于Python2;Python3默认就是这样)。而且,你也可以用同样的方法去掉QString,更多细节可以查看文档

另外,如果你打算走这条路,可能还需要看看PyQt文档中的QSettings支持部分。

撰写回答