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

Filling a QListWidget with elements from a dynamic list

我在 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 时,我可以看到 Number 1Number 2,依此类推。

希望你能帮助我。

如果您不打算使用 Model/View 架构,您有两个选择。

1。 Build/refresh 每次显示 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 作为您的 "model".

甚至不必费心保留一个单独的列表。直接编辑QListWidget中的QListWidgetItems。这仅在您不是每次都销毁和创建 QDialog 时才有效。

在较长的 运行 中,我认为您会发现此方法效果更好。您将更少地拆除和刷新 GUI(这意味着它会更快),并且您不必处理更新源列表而不更新 GUI 的错误(反之亦然)。