如何使用Tkinter进行实时数据库更新

2024-09-24 10:16:20 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我吗。我正在使用两个数据库(srcdb、maindb),我进行了一次sql查询,从scrdb获取数据并检查是否插入了新数据。如果有新数据,它将更新maindb

我用这个代码来实现它的实时性。(无问题)

while True:
  query.UpdateStats()
  query.UpdateCounts()

如何在Tkinter中实现上述代码目前,我在update函数中插入了查询,但它每1s调用一次函数

我需要在循环结束时运行查询

root = Tk()
root.title('Title')
root.geometry("400x200")

def update():
  dt_str = datetime.today().strftime("%m/%d/%y - %I:%M:%S %p")
  dtCurrent_label.config(text=dt_str)
  query.UpdateStats()
  query.UpdateCounts()
  dtCurrent_label.after(1000, update)

dtCurrent_label = Label(root, text="", fg="green", font=("", 11))
dtCurrent_label.pack(pady=(0, 10))

update()
root.mainloop()

另外,如何在没有控制台的情况下运行它。pyw不能使用,而且我不知道如果我使用pyinstaller,它是否能工作,因为我使用的是其他python文件


Tags: 数据代码text数据库dtupdaterootquery
1条回答
网友
1楼 · 发布于 2024-09-24 10:16:20

使用多线程来处理它:

from datetime import datetime
from threading import Thread
from tkinter import Tk, Label

root = Tk()
root.title('Title')
root.geometry("400x200")


def update():
    while True:
        dt_str = datetime.today().strftime("%m/%d/%y - %I:%M:%S %p")
        dtCurrent_label.config(text=dt_str)
        query.UpdateStats()
        query.UpdateCounts()


dtCurrent_label = Label(root, text="", fg="green", font=("", 11))
dtCurrent_label.pack(pady=(0, 10))

Thread(target=update).start()
root.mainloop()

或者干脆把dtCurrent_label.after(1000, update)改成dtCurrent_label.after(1, update)

相关问题 更多 >