PyQt

2016-04-06 21 views
2
'da QstringList öğesini QPring'e dönüştürme

QFileDialog kullanarak dosya adlarının listesini almaya çalışıyorum ve bir QLineEdit (Python 2.7'de) içinde görüntülenmesini istedim.PyQt

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

(hata söylediği gibi) O bekler bir QString:

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

birisi bir QString içine QStringList dönüştürme bana yardımcı olabilir.

cevap

2

istediğiniz değeri önceden

Teşekkür QStringList listede olmayan kendisinde dizedir

Üzerinde bölünmüş çağrı sonra birlikte listedeki elemanları katılıp için QStringList.join yöntemini kullanabilirsiniz o 3 QStringList ve QString sırasıyla yerli piton listesi ve dizeleri eşlenir python'da bir yerli piton listesi

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 

olsun.

+0

Hızlı yanıt için teşekkürler. Birden fazla dosya seçtiğimde bu maalesef çalışmıyor. Sadece 'strlist = xxres_file.join (", ")' ve 'self.resLine.setText (strlist)' işlevlerinin kullanılması birden fazla dosyada problemi çözer. Eğer hatalı olduğumda Pls beni düzeltiyor – sat0408

+0

Evet haklısın ... 'QStringList' içindeki tüm öğeleri virgülle (veya belirttiğiniz herhangi bir ayırıcıyla) ayrılmış tek bir dizgeye birleştirir. ama eğer başka bir nedenden ötürü münferit elemanlar istiyorsanız, artık bir python dizesi olduğu için dize üzerinde .split() 'yi çağırabilirsiniz. – danidee

1

Eğer PyQt oldukça son sürümünü kullanıyorsanız varsayarsak, ayrıca Qstringleri

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

# Do pyqt imports afterwards 
from PyQt4 import QtCore, QtGui 

Sonra sadece düzenli str ve list yöntemleri kullanmak

için yeni API olarak PyQt söyleyebilir.