打开应用程序然后关闭它(Pyglet& Threading)

时间:2017-01-28 21:04:36

标签: python

我要做的是打开一个窗口,等待8秒然后关闭它,每次都使用代码,错误信息是: AttributeError:' NoneType'对象没有属性'翻转'

这是代码

import pyglet
from threading import Timer

ag_file = "loading2.gif"
animation = pyglet.resource.animation(ag_file)
sprite = pyglet.sprite.Sprite(animation)
win = pyglet.window.Window(width=sprite.width, height=sprite.height)
def close():
  win.close()
  return close
t = Timer(8.0, close)

@win.event
def on_draw():
  win.clear()
  sprite.draw()
t.start()
pyglet.app.run()

1 个答案:

答案 0 :(得分:0)

在第二个线程关闭窗口的同时,主线程可能正在使用窗口绘制图像,因为第二个线程关闭窗口而无法找到它。

Pyglet有自己的方法来安全地执行带有延迟(或定期)的函数而没有thread

http://pyglet.readthedocs.io/en/pyglet-1.2-maintenance/programming_guide/time.html

import pyglet

ag_file = "loading2.gif"

animation = pyglet.resource.animation(ag_file)
sprite = pyglet.sprite.Sprite(animation)

win = pyglet.window.Window(width=sprite.width, height=sprite.height)

@win.event
def on_draw():
    win.clear()
    sprite.draw()

def close(event):
    win.close()

pyglet.clock.schedule_once(close, 8.0)

pyglet.app.run()