【发布时间】:2014-12-24 08:10:55
【问题描述】:
我有一个为我的第一个项目编写的游戏,我想要一个可以玩和暂停游戏的系统。当您单击取消暂停按钮时,我希望它每 1 秒调用一个函数来提前日期。 Time.sleep 停止了整个程序,所以它对我没有用,而且我似乎无法在启动线程后重新启动线程。这是提前一天的功能。
def time():
global timer
timer = threading.Timer(1.0, time)
timer.start()
thirtyonemonths = [1, 3, 5, 7, 8, 10, 12]
thirtymonths = [4, 6, 9, 11]
globalvars.day = globalvars.day + 1
for self in thirtyonemonths:
if self == globalvars.month:
print "hi"
if globalvars.day == 32:
globalvars.day = 1
globalvars.month = globalvars.month + 1
for self in thirtymonths:
if self == globalvars.month:
print "hi"
if globalvars.day == 31:
globalvars.day = 1
globalvars.month = globalvars.month + 1
if globalvars.month == 2:
print "hi"
if globalvars.day == 29:
globalvars.day = 1
globalvars.month = globalvars.month + 1
if globalvars.month == 13:
globalvars.month = 1
globalvars.year = globalvars.year + 1
threading.Thread.time(self)
timer = threading.Timer(1.0, time)
稍后我有当按钮被点击时检查它是否被暂停的代码
if b.collidepoint(pos):
if globalvars.ispaused == 1:
globalvars.ispaused = 0
timer.start()
break
if globalvars.ispaused == 0:
globalvars.ispaused = 1
timer.cancel()
break
在我第三次按下按钮之前,一切正常。有谁知道我可以重新启动线程或者使用不同的方法来做我想做的事情?
【问题讨论】:
-
@Apero:他正在使用线程。这就是
threading.Timer的含义。 -
请尝试将其重写为minimal, complete, valid example。您执行 GUI 的方式可能与此处相关。如果不是,请尝试在没有任何 GUI 内容的情况下重现问题,这样别人解决起来会更容易。
标签: python multithreading timer