但是在使用布尔值时遇到了问题。
我有一个方法
def changed(self):
s = QSettings()
for key in self._options:
#print key, self._options[key], s.value(key)
if self._options[key] != s.value(key):
return True
return False
只要s中没有任何布尔值,这就可以工作 如果字典中有布尔值,则函数始终返回True。
取消注释print
行会显示问题并导致
hasDefault True true
所以问题是:QSettings返回的这个小写true
是什么,我怎样才能让Python正确地将它与布尔值进行比较?
我读过你应该使用toBool()
来弥补不同平台上的不同表现形式。但我不知道如何在这样的循环中做到这一点(即事先不知道要比较什么类型)。
赞赏任何提示或解决方案!
答案 0 :(得分:1)
也许这篇文章还为时过早,但它对于清楚地说明是有用的。
进一步的研究表明,这是一个不是最新的Qt版本的问题,但现在QSettings.value()提供了一个可选的type
参数来指定返回类型。
使用
for key in self._options:
if self._options[key] != s.value(key, type=type(self._options[key])):
return True
return False
我设法将s.value()
s的类型设置为字典中实际值的类型。
可以帮助别人......