2016-04-06 1 views
2

J'essaie d'obtenir une liste de noms de fichiers en utilisant QFileDialog et je voulais être affiché dans un QLineEdit (en Python 2.7).Convertir QstringList en Qstring dans PyQt

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

Il attend (comme l'erreur dit) un QString:

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

Quelqu'un pourrait-il me aider à la conversion d'un QStringList en QString.

Merci à l'avance

Répondre

2

La valeur que vous voulez est la chaîne dans la QStringList pas la liste elle-même

Vous pouvez utiliser la méthode QStringList.join pour joindre les éléments dans la liste ensemble et ensuite appeler divisés sur pour obtenir une liste de python natif

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 

en python 3 QStringList et QString sont mises en correspondance à la liste python natif et des chaînes respectivement.

+0

Merci pour la réponse rapide. Cela ne fonctionne malheureusement pas lorsque je sélectionne plusieurs fichiers. Utiliser simplement 'strlist = xxres_file.join (", ")' et 'self.resLine.setText (strlist)' résout le problème avec plusieurs fichiers. SVP corrigez-moi si je me trompe – sat0408

+0

Oui vous avez raison ... il joint tous les éléments de 'QStringList' dans une seule chaîne, séparée par des virgules (ou par tout séparateur que vous spécifiez). mais si vous voulez les éléments individuels pour une autre raison, vous pouvez juste appeler '.split()' sur la chaîne car c'est maintenant une chaîne python – danidee

1

En supposant que vous utilisez une version assez récente de PyQt, vous pouvez aussi dire pyqt d'utiliser la nouvelle api pour QString

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

# Do pyqt imports afterwards 
from PyQt4 import QtCore, QtGui 

Ensuite, il suffit d'utiliser les str et list régulières méthodes.