pyglet 简介
pyglet是一个面向Python的跨平台窗口和多媒体库,用于开发游戏和其他视觉丰富的应用程序。它支持窗口,用户界面事件处理,OpenGL图形,加载图像和视频,播放声音和音乐。pyglet适用于Windows、OS X和Linux。
下面是它的一些特性:
- 不需要其他的安装依赖:一个Python足矣。
- 利用多窗口和多显示器的桌面程序。
- 几乎以任何格式加载图像、声音、音乐和视频。
- pyglet是在BSD开源许可下提供的。
- 支持python2和python3。
快速开始(Hello World)
从Hello World 开始
演示如下:
下面就是简单的代码了。
- 首先导入我们pyglet。
- 然后利用默认的构造函数创建一个Window窗口。
- 然后创建一个Label,利用构造创建相应的属性。
- 然后绑定一个重新绘制窗口的on_draw函数。
- 最后运行我们的程序。
import pyglet
window = pyglet.window.Window()
label = pyglet.text.Label('Hello, world',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
pyglet.app.run()
图像查看器
__docformat__ = 'restructuredtext'
__version__ = '$Id$'
import pyglet
window = pyglet.window.Window()
image = pyglet.resource.image('kitten.jpg')
@window.event
def on_draw():
window.clear()
image.blit(0, 0)
pyglet.app.run()
操纵我们的鼠标和键盘事件
from __future__ import print_function
__docformat__ = 'restructuredtext'
__version__ = '$Id$'
import pyglet
from pyglet.window import key
from pyglet.window import mouse
window = pyglet.window.Window()
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
print('The "A" key was pressed.')
elif symbol == key.LEFT:
print('The left arrow key was pressed.')
elif symbol == key.ENTER:
print('The enter key was pressed.')
@window.event
def on_mouse_press(x, y, button, modifiers):
if button == mouse.LEFT:
print('The left mouse button was pressed.')
@window.event
def on_draw():
window.clear()
pyglet.app.run()
音乐播放器
这是一部分简单的代码:
import pyglet
music = pyglet.resource.media('Lizzo - Truth Hurts (Official Video).mp3')
music.play()
pyglet.app.run()
小技巧:
一般默认地,音乐在播放的时候是流媒体的,这对于播放一些时间长的音乐是很好的。但是如果是一些音效很短的例如枪火声之类的特效,非常的短暂。那么,最好在我们播放之前,就将其解码后存入到内存中。这样我们可以直接的使用这些音效,并且可以带来更少的cpu性能损耗。
使用以下的语句:
sound = pyglet.resource.media('shot.wav', streaming=False)
sound.play()
如果需要更高级的代码程序。
如引入一个为pyglet编写的音乐解码库。
AVbin 解码库简介
AVbin是一个跨平台的二进制版本的库,它封装了Libav的视频和音频解码库,为需要它的应用程序和语言提供了长期的二进制兼容性。
AVbin最初是为Pyglet项目创建的,作为它的媒体解码/解压库,尽管我们希望其他人也发现AVbin有用。