Convert QStingList to Python list

Peter Otten __peter__ at web.de
Sat Nov 27 10:57:07 EST 2010


Peter Chant wrote:

> The following code generates a QStringList:
> 
> fileNames = QFileDialog.getOpenFileNames(None,"Chose raw file",".",)
> 
> Printing it:
> 
> print "Files selected "+QStringList(fileNames)

You say that fileNames already is a QStringList. Why are you trying to 
convert it to a QStringList then?
Anyway, it wouldn't work with a python list either. 

> Results in:
> 
> TypeError: cannot concatenate 'str' and 'QStringList' objects
> 
> Any idea how to convert a QStingList into a python list?  pythonQtConv
> seems to come up in google but I've no idea how to import or invoke it.
> 
> Thoughts?

Try it out yourself in the interactive interpreter. Here's a sample session:

>>> files = QStringList(["alpha.txt", "beta.txt"])
>>> print files
<PyQt4.QtCore.QStringList object at 0x7f64cb73e668>
>>> print list(files)
[PyQt4.QtCore.QString(u'alpha.txt'), PyQt4.QtCore.QString(u'beta.txt')]
>>> print [str(f) for f in files]
['alpha.txt', 'beta.txt']
>>> print "Selected files:", ", ".join(str(f) for f in files)
Selected files: alpha.txt, beta.txt
>>> files = QStringList([u"äöü.txt", "beta.txt"])
>>> print "Selected files:", ", ".join(str(f) for f in files)
Selected files:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <genexpr>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: 
ordinal not in range(128)
>>> print "Selected files:", ", ".join(unicode(f) for f in files)
Selected files: äöü.txt, beta.txt

Peter



More information about the Python-list mailing list