2013-06-18 3 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 

방법을 가지고있다.
사전에 부울 값이 있으면이 함수는 항상 True를 반환합니다.

hasDefault True true 

의 문제 및 결과를 print 라인을 보여줍니다 주석을

그래서 질문 : 무엇 반환을 QSettings이며 어떻게 얻을 수 파이썬은 부울에 올바르게 비교하기 위해 소문자 true?

toBool() 다른 플랫폼에서 다른 표현을 보완해야한다고 읽었습니다. 그러나 나는 그런 루프에서 이것을 어떻게 할 수 있는지를 보지 못한다. (즉, 비교할 타입을 미리 알지 못한다.)

힌트 또는 해결책을 높이 평가!

답변

1

어쩌면 게시물이 조기 였을 수도 있지만 일을 분명히하는 데 유용했습니다.

추가 연구에 따르면 최신 Qt 버전과 관련이없는 문제가 있지만 QSettings.value()는 반환 유형을 지정하기 위해 옵션 인 type을 제공합니다. I는 사전에 실제 값의 종류 s.value()의 반환의 형태를 설정하는 데 성공

for key in self._options: 
     if self._options[key] != s.value(key, type=type(self._options[key])): 
      return True 
    return False 

함께

.

다른 사람을 도울 수 있습니다 ...

관련 문제