Хм, я думал, что был умным, чтобы управлять настройками PyQt с помощью (Python) словаря. Таким образом, я подумал, что смогу перебрать настройки хотя бы для сохранения и сравнения.
Но у меня возникли проблемы при использовании логических значений.
у меня есть метод
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()
, чтобы компенсировать разные представления на разных платформах. Но я не вижу, как я могу сделать это в таком цикле (т.е. не зная заранее, какой тип сравнивать).
Любая подсказка или решение приветствуется!