pygtk TreeView 内容更新/刷新

6 投票
1 回答
3719 浏览
提问于 2025-04-18 05:07

我终于写了一个小应用程序,它可以从sqlite数据库读取数据,并把结果显示在一个树形视图中。另一个窗口(在不同的模块里)可以用来添加新记录或更新已有记录。在写入数据库后,它会关闭这个窗口。

现在我想做的是更新“主”窗口(包含树形视图),让它显示新的数据集。我到目前为止已经做到这一点,但问题是:a) 原来的主窗口还在,而新的窗口又在它上面打开,显示的是想要的(新)数据集。

我该怎么做才能解决这个问题呢?有没有人能给我一些建议或例子?

也许我需要说明一下,我的主窗口模块的__init__函数在运行时做了所有的事情:创建界面,读取数据库并显示所有数据。我怀疑这可能是问题所在,但我尝试了几乎所有将其拆分成不同部分(函数)的组合,还是没有成功。

--编辑--

好的,我现在有很多不同的函数__init__ 现在创建主界面,而其他函数则从数据库读取数据并将其放到树形视图中。

我尝试使用定时器,但这个选项似乎也不合适,因为 gtk.TreeView 没有这样的功能。

1 个回答

8

最后我终于搞明白了这个问题,所以我把这个答案发出来,希望对其他人有帮助:

我只需要做的就是用 .clear 清空列表存储,然后重新构建它,最后用 set_model 把它设置到树形视图上。

刷新功能的代码如下:

liststore.clear()

create_model_checks() # 重新创建列表存储

treeView.set_model(liststore)

撰写回答