うーん、(Python) 辞書で PyQt 設定を管理するのは賢いと思いました。そうすれば、少なくとも保存と比較のために設定を反復できると思いました。
しかし、ブール値を使用すると問題が発生しました。
方法があります
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()
さまざまなプラットフォームでのさまざまな表現を補うために使用する必要があることを読みました。しかし、そのようなループでこれを行う方法がわかりません(つまり、比較するタイプが事前にわからない)。
ヒントや解決策をいただければ幸いです。