首页 > 解决方案 > 在需要一段时间才能打开的 tkinter 文件上创建加载消息

问题描述

我有一个使用 tkinter 的 Python 脚本,它在打开时运行一个需要一两分钟才能运行的查询。我想在加载完整应用程序之前创建一条消息,以便用户知道它正在加载。我的代码如下所示:

sqlStr = 'select * from exampleTable'

df = pd.read_sql(sqlStr, conn)

*Some database manipulation*

def1:
     example def 

w = tk.Tk()
w.mainloop()

从这段代码中,应用程序在数据库操作完成之前不会打开。有没有办法在熊猫导入数据时显示一些加载屏幕?

标签: pythonpandastkinter

解决方案


您可以在单独的线程中运行您的数据库操作:

import time
import threading
import tkinter as tk
from tkinter.ttk import Progressbar


class TkApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.progress = Progressbar()
        threading.Thread(target=self.db).start()

    def db(self):
        self.progress.grid(row=1, column=0)
        self.progress.start()
        time.sleep(5)  # do something with DB
        self.progress.stop()
        self.progress.grid_forget()


app = TkApp()
app.mainloop()

结果如下:

在此处输入图像描述


推荐阅读