2014-11-04 3 views
0

Я новичок в PyQt4.PyQt4: Сохранить QListWidget

У меня есть QListWidget, а затем я хотел бы сохранить непосредственно, но единственный пример, который я нашел, - это текстовый файл и нужно сначала открыть файл.

Но в моем случае нет файла для открытия. можно ли это сделать?

до сих пор мой код выглядит следующим образом:

def initUI(self): 

    self.edit = QtGui.QListWidget() 

    btn1 = QtGui.QPushButton("Check") 

    btn2 = QtGui.QPushButton("Quit") 

    btn1.clicked.connect(self.buttonClicked)    
    btn2.clicked.connect(self.closeEvent) 

    toolBar = QtGui.QToolBar() 

    fileButton = QtGui.QToolButton() 
    fileButton.setText('File') 
    fileButton.setMenu(self.menu()) 

    saveButton = QtGui.QToolButton() 
    saveButton .setText('save') 
    saveButton .clicked.connect(self.save_menu) 

    toolBar.addWidget(fileButton) 
    toolBar.addWidget(saveButton) 

def save_menu(self): 
    fn = QtGui.QFileDialog.getSaveFileName(self, "Save as...", '.', 
      "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)") 

    self.setCurrentFileName(fn) 
    return self.fileSave() 
+0

Вы хотите сохранить значения QListWidget? Файл? – 101

+0

да я хотел бы – usertfwr

ответ

2

Предполагая, что вы просто хотите сохранить текстовые записи в списке, это должно работать. Помните, что он попытается записать файл на ваш диск.

import sys 
import os 
from PyQt4 import QtGui 


class AnExample(QtGui.QMainWindow): 
    def __init__(self): 
     super(AnExample, self).__init__() 

     self.buildUi() 

    def buildUi(self): 

     self.listWidget = QtGui.QListWidget() 
     self.listWidget.addItems(['one', 
            'two', 
            'three']) 

     warning = QtGui.QLabel("Warning, this progam can write to disk!") 
     saveButton = QtGui.QPushButton('Save to location...') 
     justSaveButton = QtGui.QPushButton('Just save!') 
     saveButton.clicked.connect(self.onSave) 
     justSaveButton.clicked.connect(self.onJustSave) 

     grid = QtGui.QGridLayout() 
     grid.addWidget(warning, 0, 0) 
     grid.addWidget(self.listWidget, 1, 0) 
     grid.addWidget(saveButton, 2, 0) 
     grid.addWidget(justSaveButton, 3, 0) 

     central = QtGui.QWidget() 
     central.setLayout(grid) 

     self.setCentralWidget(central) 

    def onSave(self): 
     self.saveFile(True) 

    def onJustSave(self): 
     self.saveFile(False) 

    def saveFile(self, showDialog): 
     """ 
     Function that will save list items to file. 
     """ 
     # save to TESTING.txt in current working directory 
     savePath = os.path.join(os.getcwd(), 
           'TESTING.txt') 

     # allow user to override location if requested 
     if showDialog: 
      savePath = QtGui.QFileDialog.getSaveFileName(self, 
                 'Save text file', 
                 savePath, 
                 'TESTING.txt') 

     # if just saving, or user didn't cancel, make and save file 
     if len(savePath) > 0: 
      with open(savePath, 'w') as theFile: 
       for i in xrange(self.listWidget.count()): 
        theFile.write(''.join([str(self.listWidget.item(i).text()), 
              '\n'])) 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = AnExample() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

спасибо, что это прекрасно! – usertfwr

Смежные вопросы