【问题标题】:Displaying entries in a database live [closed]实时显示数据库中的条目[关闭]
【发布时间】:2026-01-31 17:25:01
【问题描述】:

所以我查看了本教程:the tutorial。代码没有运行,它有一些错误,但我能够修复这些。我想知道如何使用 tkinter 和 mysqlite3 来生动地更新条目列表。因此,假设我插入了一个条目,它将在一两秒内显示在列表中。在本教程中,这是通过单击“显示注释”来完成的。

我要问的是如何使用 Tkinter 和 Python 从数据库中创建一个活泼更新的条目列表?

【问题讨论】:

  • 这里有问题吗?
  • @MikeW 我已经编辑了这个问题,让我的问题更清楚。

标签: python sqlite tkinter


【解决方案1】:

我实际上无法查看源材料,所以这可能是完全错误的,在这种情况下我将删除。您如何使用Thread 每隔几秒钟调用一次 Show Notes 函数?有点像....

import threading #if you haven't already, as I said I can't look at your link atm

def show_notes(*args,**kwargs):
    # whatever you already have implemented here that that button calls

class Update(threading.Thread):
    from time import sleep
    daemon = True

    def run(self):
        while True:
            show_notes()
            sleep(2)

tick = Update()
tick.start()

这是一个丑陋的实现,因为基本上您要求每两秒对 SQL Server 进行一次完整转储,但它会为非常小的数据库执行您想要的操作。如果您有比这更大的东西,您可能想要更改添加注释的方式,以便将它们放入 Queue 作为更改,然后让您的 ListBox 运行通过 Queue 并拉每个从服务器单独提交新的提交。

【讨论】:

  • 我对 Python 还很陌生,所以还没有完全听说过线程。我会试试这个,如果我成功了,请告诉你。
  • @tyler5819 请注意我刚刚添加的注释。这是一种糟糕的实现方式,但对于较小的数据集,它会起作用。基本上它每两秒请求一次 SQL Server 转储,这对于任何不平凡的事情来说都是一件坏事。
  • 请记住,本教程已有 2 年历史了,他们建议使用的一些方法现在已经过时了,并且已被 New Hotness 取代。
  • 所以我收到一个错误:“NameError: global name 'show_notes' is not defined”。这是因为我已经有另一个名为“程序”的类,它包含定义“show_notes”吗?
  • 另外,无论如何,一次永远不会超过 10 个条目。