使用tkinter列表小部件来生动显示数据库条目?

时间:2014-01-28 14:27:30

标签: python database tkinter

所以我很好奇如何创建一个tkinter列表小部件,并且每隔几秒钟刷新一次,并显示所有数据库条目。我对编码很新,所以对如何做到这一点有点困惑,我知道它不应该太难。我不是要求提供完整的代码,只是提供一些关于如何执行此操作的指导?

1 个答案:

答案 0 :(得分:1)

可能您唯一的选择是定期查询数据库并根据查询结果更新UI。也就是说,除非您有一个数据库库,只要它检测到更改就可以调用该函数。

Tkinter可以使用after方法轻松完成此类操作。这使您可以安排某些事情在将来的某个时刻运行。实际上,您可以使用它来创建无限刷新列表。它看起来像这样:

def refresh_list():
    results = do_query()
    listbox.delete(0, "end")
    listbox.insert(0, *results)
    listbox.after(1000, refresh_list)

以上将进行查询,删除列表框中的项目,然后在列表框中插入查询结果。最后,它将安排自己在1000毫秒内再次运行。

当然,这远非生产准备。您应该跟踪列表框中选择的内容,记住滚动条的位置,和/或仅插入新项目并删除已删除的项目,而不是替换整个列表。基本概念是重要的 - 执行查询,更新列表框,然后在一两秒内再次调用该函数。

假设查询只需要几百毫秒左右的时间,那么一切正常。如果查询花费的时间比这长得多,您可能需要将查询放在一个线程中,然后在有数据要显示时让线程与GUI线程通信。