كيفية حفظ وتحميل محتويات QListWidJet إلى/من QSetting مع PYQT4؟
-
28-09-2019 - |
سؤال
لقد حصلت على QListWidget في تطبيق PYQT4 الخاص بي. أنه يحتوي على مسارات المجلدات. أرغب في حفظ محتوياتها إلى QSettings وتحميلها لاحقًا. لقد استخدمت هذا الرمز للقيام بذلك:
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
ولكن إذا قمت بعمل مسارات مجلدات يتم تخزينها في ملف التكوين مثل:
musicfolders={0: PyQt4.QtCore.QString(u'/home/sam/Ubuntu One')}
لذلك ليس لدي أي فكرة عن كيفية تحميلها بعد ذلك. لقد جربت شيئًا كهذا في متغيرات مختلفة:
def foldersLoad(self):
folders = eval(self.tunSettings.value('musicfolders').toString())
يعيد الخطأ:
TypeError: eval() arg 1 must be a string or code object
يبدو أنني بحاجة فقط إلى حفظ البيانات بطريقة أخرى ثم أفعل الآن. غولت كثيرا ، ولكن ليس لديك أدنى فكرة. أنا متأكد من أن الإجابة تافهة ، لكنني عالق.
المحلول
الحل ببساطة جدا. كنت لاستخدام QStringList.
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
وتحميل
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())
لا تنتمي إلى StackOverflow