Tkinter中的线程自动启动

2024-06-17 13:34:42 发布

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

我试图添加一个线程到tkinter按钮,当它按下时触发。但只要我运行程序,按钮内的功能就会在我点击任何东西之前自动启动

这是我的密码:

m = Main()

root = Tk()
root.geometry("500x500")
frame = Frame(root)
frame.pack()
start = Button(frame, text="Start",
               command=threading.Thread(target=m.main).start())
stop = Button(frame, text="stop", command=quit)

start.pack(pady=20)
stop.pack()

root.mainloop()

Tags: text程序功能密码maintkinterbuttonroot
1条回答
网友
1楼 · 发布于 2024-06-17 13:34:42

函数在未单击按钮的情况下运行的原因是您在函数后添加了括号

因此,您需要更改这一行:

start = Button(frame, text="Start",
               command=threading.Thread(target=m.main).start())

为此:

start = Button(frame, text="Start",
               command=threading.Thread(target=m.main).start)

您所要做的就是去掉括号,这告诉python只有在单击按钮时才能运行函数。如果包含括号,python将其视为普通函数调用,并完全忽略该按钮

完整代码:根据您在问题中给出的内容

m = Main()

root = Tk()
root.geometry("500x500")
frame = Frame(root)
frame.pack()
start = Button(frame, text="Start",
               command=threading.Thread(target=m.main).start)
stop = Button(frame, text="stop", command=quit)

start.pack(pady=20)
stop.pack()

root.mainloop()

或者您可以使用lambda

相关问题 更多 >