PySide を使用した Python スクリプトがあり、正常に動作します。しかし、PyQt4で動作するかどうかを確認することを考えました. そして、インポート文字列を 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 のテキストを読み取り、後で使用するドット区切りの文字列プレゼンテーションを作成します。マークされた「>>」行は、問題が発生する場所です。「x」オブジェクトは、PySide ライブラリを使用しているときのように、突然空の文字列になることはありません。ただし、空の self.combo[i] がある場合は、空であることが期待されます。
SOアーカイブを検索したところ、この回答が見つかりましたが、使用できません。これを修正する方法をアドバイスしてください。