Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重做ListCtrl_Python_Wxpython - Fatal编程技术网

Python 重做ListCtrl

Python 重做ListCtrl,python,wxpython,Python,Wxpython,我有一个程序,基本上由一个ListCtrl组成,有一个添加按钮、一个编辑按钮和一个删除按钮。正如你们所想象的,这不是很难(我认为这很难,因为它不同于线性编程,但我正在学习) 显示的数据取自数据库,根据情况添加、编辑或删除某些数据 现在我希望,当数据发生更改时,ListCtrl会完全重新加载(基本上是因为数据已排序)。这意味着:更新数据库中的数据,然后使用新数据从数据库中创建新的ListCtrl,而不是单独更新ListCtrl和数据库 这是将数据插入ListCtrl的代码,位于面板中(应该重新加载

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

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

现在我希望,当数据发生更改时,ListCtrl会完全重新加载(基本上是因为数据已排序)。这意味着:更新数据库中的数据,然后使用新数据从数据库中创建新的ListCtrl,而不是单独更新ListCtrl和数据库

这是将数据插入ListCtrl的代码,位于面板中(应该重新加载ListCtrl的对象是一个对话框,从不同位置调用):

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


提前感谢

不确定问题出在哪里,但您应该将填充
列表Ctrl
的代码放在一个方法中,并在修改数据时调用它以更新列表。

要在再次填充列表之前清除列表,可以使用
ListCtrl
方法
DeleteAllItems()
ClearAll()

我个人喜欢使用ObjectListView而不是普通的ListCtrl。我甚至就这个问题写了一篇文章。今年,我写了一篇关于SQLAlchemy的教程。我想这些也会对你有所帮助。

天哪!当我为一些复杂的事情而斗争时,我通常会忘记“简单的事情”。我想它会起作用的。谢谢
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