2013-06-18 36 views
0

嗯,我認爲我很聰明,以(Python)字典管理我的PyQt設置。這樣,我想我可以迭代至少保存和比較設置。使用布爾值迭代設置字典與Qsettings

但是我在使用布爾值時遇到了問題。

我有一個方法

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 

的問題,結果所以,問題是:這是什麼小寫true是QSettings回報,以及如何我可以得到Python來正確地比較這對一個布爾值?

我讀過你應該使用toBool()彌補不同平臺上的不同表示。但我沒有看到我在這樣的循環中如何做到這一點(即,事先不知道要比較哪種類型)。

任何提示或解決方案讚賞!

回答

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()迴歸到字典中的實際值的類型的類型。

可以幫助別人...