正如有人谁是新的节目,我不断地发现自己遇到了错误和问题,同时寻找答案和解决方案,我很少找出为什么是这样的。这一次,它与Python 2.7上的Tkinter。 手头的问题是每次按下我创建的“提交”按钮时,GUI都会冻结。研究部门告诉我,这个问题是因为没有回调让程序到达主循环。我面临的问题是与GUI一起运行的程序是定时器上永无止境的自动化循环。我也在这个网站上搜索过,但是,像往常一样,我只能得到答案,它说“这样做,因为我说它的工作原理”。作为一个真正感兴趣并试图深入探究编程的辉煌黑洞的人,解释为什么需要这样做以及你如何得出这个结论对我来说是一个很大的帮助。我完全理解,编程是那些广泛而又特别的东西之一,解释会变得不同,有时候会有偏差,但是我发现很难从其他方面学习。当我点击我的按钮时,如何阻止我的Tkinter GUI冻结?
我的代码到目前为止的简化版本如下: (我知道简化的代码在本网站上不是首选,但我没有办法在没有编写代码的情况下将代码转移到任何其他计算机所有下来,在这里键入它。我知道你们会在我喊它以后。因此,对于这一点,我很抱歉。)
import os
import time
from datetime import datetime
import shutil
from Tkinter import *
root=Tk()
root.title("Automation")
root.config(bg="black")
root.geometry("500x500")
def submit():
input=e1.get()
#the input is a limit set for a variable in the timer that when
#it hits that limit, it jumps to the 400 lines of code
def Timer():
<timer code>
<400 lines of code that has been tested to work 100%>
Timer()
b1=Button(root, command=submit)
button.grid(row=0, column =0)
e1=Entry(root, width=50)
e1.grid(row=0, column=1)
mainloop()
而且,我觉得很难发现和明确的信息,如果没有它说GUI的GUI程序“嘿...只是这样做,因为我这么说”,并链接到一些研究/参考材料将不胜感激。
像往常一样,我非常感谢所有这一切都在本网站和所有的智能大大个人,使人们认为它是地方提供的帮助。谢谢你们!
问题出在''。这段代码是否有一个大循环?如果没有,是否有可能将这些代码分成几个毫秒或更少的块来运行? –
你读过以下博客文章吗?它很好地解释了发生的事情:http://stupidpythonideas.blogspot.com/2013/10/why-your-gui-app-freezes.html –