0

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アーカイブを検索したところ、この回答が見つかりましたが、使用できません。これを修正する方法をアドバイスしてください。

4

1 に答える 1

1

x値を並べ替えの文字列に変換する必要があります。何かのようなもの

curr_query.append(str(x))

トリックを行う必要があります。

于 2013-05-19T07:51:55.600 に答える