我正在尝试编写一个点击游戏,并且已经有了一个屏幕、一个增加金钱的按钮和一个升级来增加点击所赚的钱。整个事情都是用 Tkinter 制作的。 我现在想要编写的下一个函数是用于升级的被动收入函数,它每 y 秒提供 x 钱
def passive_income(moneygive,seconds):
global money
if True:
money += moneygive
time.sleep(seconds)
这个问题是它在 time.sleep 函数时停止/延迟游戏的主循环,这就是我尝试线程化它的原因
thread = threading.Thread(passive_income(10,10))
thread.start()
#before mainloop
但是这不会改变任何东西,并且线程也不会重复。当我将 if 语句更改为 while 循环时,主循环不会启动。 我该如何编码才能不破坏主循环? 预先感谢
您正在调用
Thread
构造函数,其结果为 passive_income(10,10)
(这使主线程等待 10 秒),而从问题来看,您似乎希望线程执行该操作。您必须像这样传入 lambda(或另一个可执行构造):
threading.Thread(target= (lambda: passive_income(10,10)))
这会准备一个线程,当您启动它时,该线程将执行
passive_income(10,10)
,并在thread.start()
之后立即将控制权返回给主线程
您还可以检查: