Frage

Ich habe ein QListWidget bekommt in meinem PyQt4 App. Es enthält Ordner Pfade. Ich möchte den Inhalt zu QSettings speichern und später zu laden. Ich habe diesen Code, dies zu tun:

def foldersSave(self):
    folders = {} '''create dict to store data'''
    foldersnum = self.configDialog.FolderLIST.count() '''get number of items'''
    if foldersnum:
        for i in range(foldersnum):
            folders[i] = self.configDialog.FolderLIST.item(i).text() '''save items text to dict'''
        return str(folders) '''return string of folders to store in QSettings'''
    return None

Aber wenn ich machen, damit Ordner Pfade in der Konfigurationsdatei gespeichert sind, wie:

musicfolders={0: PyQt4.QtCore.QString(u'/home/sam/Ubuntu One')}

So habe ich keine Ahnung, wie sie dann laden. Ich habe so etwas wie dies in verschiedenen Varianten tryed:

def foldersLoad(self):
    folders = eval(self.tunSettings.value('musicfolders').toString())

Es gibt Fehler:

TypeError: eval() arg 1 must be a string or code object

Es sieht aus wie ich muss nur Daten auf eine andere Weise speichern Sie dann jetzt ich. Gooled viel, aber haben keine Ahnung. Ich bin sicher, die Antwort ist trivial, aber ich bin fest.

War es hilfreich?

Lösung

Die Lösung ist sehr einfach. Ich war QStringList zu verwenden.

def foldersSave(self):
    folders = QtCore.QStringList()
    foldersnum = self.configDialog.FolderLIST.count()
    if foldersnum:
        for i in range(foldersnum):
            print (i, " position is saved: ", self.configDialog.FolderLIST.item(i).text())
            folders.append(self.configDialog.FolderLIST.item(i).text())
        return folders
    return None

und Last

def foldersLoad(self):
    folders = QtCore.QStringList()
    folders = self.tunSettings.value('musicfolders', None).toStringList()
    if folders.count():
        foldersnum = folders.count()
        for i in range(foldersnum):
            self.configDialog.FolderLIST.addItem(folders.takeFirst())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top