Tkinter没有响应和按钮冻结?

2024-09-27 02:23:37 发布

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

我正在使用tkinter编写一个应用程序,当按下按钮时,该应用程序将连接到sql DB并运行sql查询。我遇到了这样一个问题:当sql querys方法运行时,GUI会说“没有响应”,当它完成时,它会恢复正常。我决定将sql查询放在它自己的线程中,将tkinter的主循环放在它自己的线程中,但它根本不工作

def createGUI():
    window = Tk()
    window.title("Recon Report Generator")

    lbl=Label(window, text="Enter Recon File Below", fg='blue', font=("Helvetica", 16))
    lbl.place(x=90,y=50)
    textBox=Entry(window, text="This is Entry Widget", bd=5)
    textBox.place(x=135, y=100)
    button=Button(window, height=1, width=15, text="Find Missing", 
                    command=lambda: retrieve_input(textBox,lbl))
    button.place(x=140, y=150)
    window.geometry("400x400")
    window.resizable(False, False)
    _thread.start_new_thread(window.mainloop(), (0,))

这是我的GUI,我将主循环放在线程0中

这里呢

def retrieve_input(textBox,lbl):
    detFile = "'"+(textBox.get())+"'"
    lbl.place(x=140,y=50)
    lbl.config(text="Enter Recon File Below")
    _thread.start_new_thread(runDatabaseQuerys(detFile), (1,))

    lbl.config(text="Finished...")
    print("Finished Please check file")

我将sql查询运行方法放在线程1中,它们是独立线程,但我仍然得到“无响应”


Tags: 方法text应用程序sqltkinterdefplacegui
1条回答
网友
1楼 · 发布于 2024-09-27 02:23:37

我很长一段时间都在讨论这个问题,直到我在stackoverflow上找到了关于使用多线程的答案

Tkinter window says (not responding) but code is running

您需要为sql查询函数创建一个线程,如下所示

from threading import Thread 

Thread(target = retrieve_input, args =(textbox, lbl, )).start()

相关问题 更多 >

    热门问题