tkinter GUI中出现意外数据泄漏



最近我开始用Python制作一个名为Robbery Clicker的游戏。我的项目使用了tkinter,并且最近在相关性方面做得很好。

从本质上讲,下面显示的代码将在被GUI上的按钮小部件调用后运行:

def auto1():
global coins
global item1_auto
if coins >= 250:
coins -= 250
runauto1()
item1_auto = 1
click1["state"] = DISABLED
click1.update()
click1_auto.config(state=DISABLED)
def runauto1():
global coins
global item1_sleep
global item1
global item1_cost
click1.after(int(item1_sleep * 1000), runauto1)
click1.after(int(item1_sleep * 1000), do1())

然而,在实现此代码后,单击按钮后立即发生内存泄漏,并且在解决后大约10秒,它将导致无法解决的内存泄漏。

我的全部代码可以在这里找到:https://pastebin.com/pHwZFwZV

至少部分问题是:click1.after(int(item1_sleep * 1000), do1())您正在立即调用do1(),而不是将其放入队列。这和你做result=do1(); click1.after(int(item1_sleep * 1000), None)一样。如果这导致调用runauto1,您将很快创建一个递归错误。

最新更新