使用动态列表中的元素填充QListWidget

时间:2016-01-28 23:32:43

标签: python list pyqt qlistwidget

我在QtDesigner中创建了一个QListWidget,我想在之前创建的另一个名为“list_1”的列表中添加一些项目。问题是,每次按下组合键时,该列表(list_1)都会更新。

以下是代码:

class Win(self):
  list_1 = []
  number = 0                   #This is a variable that is continuously changing
  def __init__(self):
    #Some stuff in here

  def addItem(self):
    item = "Number " + str(Win.number)
    Win.list_1.append(item)
    Win.number += 1

class Dialog(QDialog):
   def __init__(self):
     QDialog._init__(self):
     uic.loadUi("ListWidget.ui", self)

   def addItems(self):
     #I want to create this method to add the items from list_1 into the `QListWidget`

如何打开QDialog(使用我已有的按钮)并在QListWidget中查看列表中附加的项目。我的意思是,“我打开QDialog,然后我看到数字1.然后,我关闭QDialog,在列表中添加一个数字,当我再次打开QDialog时,我可以看到{ {1}}和Number 1,等等。

希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

如果您不打算使用模型/视图架构,则有两种选择。

1。每次显示时都构建/刷新QListWidget。

除非您有数千件物品或每件物品都有复杂的自定义绘画,否则这将非常快。

class Dialog(QDialog):
    def __init__(self, list_1):
        QDialog._init__(self):
        uic.loadUi("ListWidget.ui", self)
        for txt in list_1:
            QListWidgetItem(txt, self.list_widget)

2。使用QListWidgetItems作为"模型"。

不要打扰单独列表。直接修改QListWidgetItems中的QListWidget。这仅适用于您每次都没有销毁和创建QDialog的情况。

从长远来看,我认为你会发现这种方法效果更好。您将更少地拆除并刷新GUI(这意味着它会更快),并且您不必处理更新源列表但不更新GUI的错误(反之亦然)。