0

我有一个基本上由 ListCtrl 制作的程序,并有一个添加按钮、一个编辑按钮和一个删除按钮。正如你可以想象的那样,并不是很困难(我认为这很困难,因为它不同于线性编程,但我正在学习)。

显示的数据取自数据库,根据情况添加、编辑、删除一些数据。

我现在想,当数据更改时, ListCtrl 会完全重新加载(基本上,因为数据已排序)。这意味着:从数据库中更新数据,然后用新数据从数据库中创建一个新的 ListCtrl,而不是分别更新 ListCtrl 和数据库。

这是将数据插入 ListCtrl 的代码,并且位于 Panel 中(应该重新加载 ListCtrl 的对象是一个 Dialog,它从不同的地方调用):

i = 0
for data in coches:
    index = self.lista.InsertStringItem(i, data[0])
    self.lista.SetStringItem(index, 1, str(data[1]))
    self.lista.SetStringItem(index, 2, str(data[2]))
    self.lista.SetStringItem(index, 3, str(data[3]))
    self.lista.SetStringItem(index, 4, str(data[4]))
    if((index+1) % 2 == 0):
        self.lista.SetItemBackgroundColour(index,gris)
    i += 1

“coches”是数据库中的一个列表,“self.lista”是 ListCtrl 对象

提前致谢

4

2 回答 2

1

不确定问题出在哪里,但是您应该将用于填充ListCtrl内部的代码放入方法中,并在修改数据时调用它以更新列表。
要在再次填写之前清除列表,您可以使用ListCtrl方法DeleteAllItems()ClearAll().

于 2012-06-17T19:07:11.663 回答
1

我个人喜欢使用 ObjectListView 而不是普通的 ListCtrl。我什至写了一个关于这个主题的教程。然后今年,我用 SQLAlchemy写了一篇关于wxPython 和 CRUD的教程。我怀疑这些对你也有帮助。

于 2012-06-18T21:41:36.333 回答