重新制作ListCtrl

时间:2012-06-17 18:51:48

标签: python wxpython

我有一个基本上来自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对象

提前致谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我个人喜欢使用ObjectListView而不是普通的ListCtrl。我甚至在这个主题上写了tutorial。然后今年,我用SQLAlchemy在wxPython and CRUD上编写了一个教程。我怀疑那些对你也有帮助。