كيف يمكنني إزالة QListWidgetItem من QListWidget وتحديث الشاشة؟
سؤال
أنا أستخدم QListWidget لعرض قائمة من QListWidgetItem
تتم قراءة هذه القائمة من ملف. عندما أغلق الملف ، أريد تفريغ القائمة.
فعلت هذه الطريقة على:
class QuestionsList(QtGui.QListWidget):
def __init__(self, parent):
super(QuestionsList, self).__init__(parent)
self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.setProperty("showDropIndicator", False)
self.setAlternatingRowColors(True)
self.quiz = None
def loadQuiz(self, quiz):
self.quiz = quiz
self.flush()
if quiz is not None:
i = 1
for question in quiz.questions_list:
self.addItem(QuestionItem(i, question, self))
i += 1
def flush(self):
for item in [self.item(i) for i in xrange(self.count())]:
print unicode(item.text())
self.removeItemWidget(item)
del item
تعمل طريقة LoadQuiz ، وتطبع طريقة Flush نص كل عنصر ولكن أو RemoveItemWidget Method ولا عنصر DEL يعمل على تفريغ القائمة.
كيف أقوم بذلك ؟
شكرًا
المحلول
لماذا لن تستخدم طريقة واضحة على QListWidget؟
نصائح أخرى
أعلم أن هذا تمت الاجابة مسبقا, ، لكنني صادفت هذا السؤال لإيجاد طريقة للحذف المحدد أغراض).
يمكن القيام بذلك مثل:
def removeSelected(self):
for item in self.selectedItems():
self.takeItem(self.row(item))
آمل أن يساعد هذا شخص هناك!
في الواقع ، لا يعمل RemoveItemWidget لهذا الغرض.
هذا هو الحل الخاص بي
def flush(self):
while self.count() > 0:
self.takeItem(0)
تعمل الطريقة TakeItem (0) مثل pop () في مكدس و takeItem (count ()-1) مثل pop () في قائمة انتظار.
لا تنتمي إلى StackOverflow