2013-05-17 3 views
0

PySide를 사용하는 Python 스크립트가 있는데 제대로 작동합니다. 하지만 PyQt4와 함께 작동하는지 확인해 보았습니다. 가져 오기 문자열을 PyQt4로 변경 한 후에 문제가 발생했습니다. 피사체 오류 점, 다음과 같이QComboBox.currentText() - PySide vs PyQt4

File "./my_file.py", line 93, in showit 
    curr_query = '.'.join(curr_query) 
TypeError: sequence item 0: expected string, QString found 

내가 그 PySide 대상 메소드가 반환 '유니 코드'문자열 하지만 PyQt4 하나 개를 반환 QString 개체를 볼 수있는 문서에서. str(), str() 등으로 게임을하는 것처럼 보이지 않았습니다.

def showit(self, idx): 
    curr_query = [] 
    for i in xrange(idx+1): 
>> x = self.combo[i].currentText() 
>> if x: 
      curr_query.append(x) 
     else: 
      break 
    curr_query = '.'.join(curr_query) 

이 나중에 사용 도트 sepated 문자열 표현을 구축 QCombobox'es 세트의 텍스트를 읽습니다 다음은 기능 코드입니다. 표시된 '>>'행은 문제가 발생하는 곳입니다. 'x'객체는 PySide 라이브러리를 사용하는 동안 갑자기 빈 문자열이 아닙니다. 그러나 비어있는 self.combo [i]가 있으면 그것은 비어있을 것으로 예상됩니다.

SO 아카이브를 검색 한 결과 answer이지만 사용할 수 없습니다. 문제를 해결하는 방법에 대해 조언 해주세요.

답변

1

x 값을 정렬 문자열로 변환해야합니다. 예 :

curr_query.append(str(x)) 

트릭을 수행해야합니다.

+0

'x'는 결코 빈 문자열이 아니므로이 코드는 작동하지 않습니다. if 조건에 초점이 맞추어 져 있고, PyQt4에 대해서는 cuz가 QString이고, PySide의 경우에는 유니 코드 문자열입니다. 그리고 어쨌든 QString의 "if x :"는 절대로 사실이 아닙니다. –

+0

문제는 나를 위해 더 일반적인 것 같습니다, 나는 여기에 더 많은 테스트를 수행하고이 동작은 QComboBox.currentText()에서 읽는 다른 프로 시저에 대한 일반적인 것으로 나타났습니다. 텍스트 값을 str()에 캐스팅하는 것과 관련이 있습니다. –