2016-04-06 19 views
2

QFileDialogを使用してファイル名のリストを取得しようとしていて、QLineEdit(Python 2.7)に表示したかったのです。QstringListをPyQtでQstringに変換する

self.resLine = QLineEdit() 
xxres_file = (QFileDialog.getOpenFileNames(self, 'Select File', '', '*.txt')) 
self.resLine.setText(xxres_file) 

(エラーが言うように)それはQStringのを期待:

TypeError: QLineEdit.setText(QString): argument 1 has unexpected type 'QStringList' 

誰かがQStringのにQStringListの変換で私を助けてもらえます。必要な値は、あなたが一緒にリストの要素を結合するためにQStringList.joinメソッドを使用して、上の分割を呼び出すことができますQStringListないリスト自体

内の文字列である事前

答えて

2

感謝それは3 QStringListQStringは、それぞれのネイティブPythonのリストと文字列にマッピングされているPythonでネイティブのPythonのリスト

strlist = xxres_file.join(",") # this returns a string of all the elements in the QStringList separated by comma's 

strlist = strlist.split(",") # you can optionally split the string to get all the elements in a python list 

self.resLine.setText(strlist[0]) # your list contains only one string in this case 

を取得します。

+0

お返事ありがとうございます。これは残念なことに私が複数のファイルを選択したときには機能しません。 'strlist = xxres_file.join("、 ")'と 'self.resLine.setText(strlist)'だけを使うと、複数のファイルの問題を解決できます。私が間違っているとPlsは私を訂正します – sat0408

+0

はい、そうです。QStringListのすべての要素をカンマ(または指定した任意の区切り文字)で区切った単一の文字列に結合します。それ以外の理由で個々の要素が必要な場合は、文字列に '.split()'を呼び出すことができます。これはPython文字列になっているからです – danidee

1

あなたはPyQtはかなり最近のバージョンを使用していると仮定すると、あなたもqstrings

import sip 
sip.setapi('QString', 2) 

# Do pyqt imports afterwards 
from PyQt4 import QtCore, QtGui 

次に、あなただけの通常のstrlistメソッドを使用し

ための新しいAPIを使用するようにPyQtはを伝えることができます。

関連する問題