0
我有一個使用PySide的python腳本,它工作正常。 但後來我想檢查它是否會與PyQt4一起使用。 將輸入字符串更改爲PyQt4後,出現了問題。 錯誤指向對象,如下所示:QComboBox.currentText() - PySide與PyQt4
File "./my_file.py", line 93, in showit
curr_query = '.'.join(curr_query)
TypeError: sequence item 0: expected string, QString found
從文檔,我可以看到PySide主題方法返回「的unicode」字符串, 但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)
這讀取一組QCombobox'es建立,我後來用一個點sepated串呈現的文本。 標有'>>'的行是發生問題的地方 - 'x'對象從來不是空字符串,突然間,因爲它在使用PySide庫時。但是如果有空的self.combo [i],它預計會是空的。
我搜索了SO存檔,發現這個answer但無法使用它。 請諮詢如何解決這個問題。
問題是'x'永遠不會是空字符串,所以這段代碼甚至不能工作。 if條件是焦點,因爲PyQt4是QString,PySide是一個unicode字符串。不知何故,QString的「if x:」從來都不是真的。 –
看起來問題對我來說更一般,我在這裏做了更多的測試,並注意到這種行爲對於從QComboBox.currentText()讀取的其他過程來說很常見。這涉及到將文本值轉換爲str(),這是正確的。 –