2017-06-12 2 views
0

Nach einigen Klicks der Schaltfläche Hinzufügen fügt es Elemente zur Listbox hinzu. Ich möchte alle Elemente aus der Listbox in eine Textdatei mit der Speichern-Schaltfläche speichern.Kopieren/Speichern von PyQt5-Listbox-Elementen in einer Textdatei python

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(400, 300) 
     self.listView = QtWidgets.QListWidget(Dialog) 
     self.listView.setGeometry(QtCore.QRect(120, 40, 256, 192)) 
     self.listView.setObjectName("listView") 
     self.AddButton = QtWidgets.QPushButton(Dialog) 
     self.AddButton.setGeometry(QtCore.QRect(20, 80, 75, 41)) 
     self.AddButton.setObjectName("AddButton") 
     self.SaveButton = QtWidgets.QPushButton(Dialog) 
     self.SaveButton.setGeometry(QtCore.QRect(20, 140, 75, 41)) 
     self.SaveButton.setObjectName("SaveButton") 

     self.AddButton.clicked.connect(self.ADD) 
     self.SaveButton.clicked.connect(self.SAVE) 


     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     _translate = QtCore.QCoreApplication.translate 
     Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 
     self.AddButton.setText(_translate("Dialog", "Add to List")) 
     self.SaveButton.setText(_translate("Dialog", "Save")) 


    def ADD(self): 
     self.listView.addItem("SAMPLE STRING") 

    def SAVE(self): 
     s = open('textfile.txt','a') 
     for items in self.listView(): 
      s.write(item) 
     s.close() 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Dialog = QtWidgets.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_()) 

aber der Code unter dem def SAVE (selbst): funktioniert nicht.

Antwort

1

self.listView ist ein Objekt und nicht durch self.listView() aufrufbar. Ich nehme an, dass Sie den Text des Artikels speichern möchten. Sie können es und alle anderen Daten der Elemente aus dem Listviews Modell erhalten:

def SAVE(self): 
    with open('textfile.txt','a') as s: 
     for i in range(self.listView.model().rowCount()): 
      text = self.listView.model().data(self.listView.model().index(i)) 
      # print(i, text) 
      s.write(text) 

oder fragen Sie nach der text() der Einzelteile:

def SAVE(self): 
    with open('textfile.txt','a') as s: 
     for i in range(self.listView.model().rowCount()): 
      text = self.listView.item(i).text() 
      # print(i, text) 
      s.write(text) 
+0

Dank für die vorgeschlagenen Optionen, geschätzt – Carlo

Verwandte Themen