首頁>技術>

1 說明:

1.1 安裝

pip install pyglet

1.2 相關地址

https://pypi.org/project/pyglet/http://pyglet.org/https://github.com/pyglet/pyglet

1.3 介紹

1.3.1 是python的遊戲三大庫之一,適合遊戲動畫,1D,2D,3D設計。

1.3.2 一個python下的多媒體框架,屬於輕量級別,可以輕易的做出互動豐富的應用。比pygame,panda3d更容易學習和掌握。

2 2d動畫散步的精靈。

2.1 程式碼:dinosaur.py

#網上gif下載地址# The dinosaur.gif file packaged alongside this script is in the public# domain, it was obtained from http://www.gifanimations.com/.#匯入模組import sysimport pyglet##定義系統載入圖片地址if len(sys.argv) > 1:    # Load the animation from file path.    animation = pyglet.image.load_animation(sys.argv[1])    texture_bin = pyglet.image.atlas.TextureBin()    animation.add_to_texture_bin(texture_bin)else:    # 檔案與py檔案在同一個目錄,這是pyglet的特色之處    animation = pyglet.resource.animation('dinosaur.gif')#定義精靈=sprite和匯出精靈模組sprite = pyglet.sprite.Sprite(animation)#定義視窗和大小window = pyglet.window.Window(          #視窗標題名caption='散步的精靈動畫',#視窗大小可調節resizable=True,width=8*sprite.width, height=8*sprite.height)# Set window background color to white.# 設定視窗背景顏色為白色pyglet.gl.glClearColor(1, 1, 1, 1) #預設背景顏色是黑色,註釋掉就是黑色#window的裝飾器法@window.eventdef on_draw():    window.clear()    sprite.draw()#啟動pyglet.app.run()

2.2 dinosaur.gif,注意與上面的py檔案放在同一個目錄下

2.3 效果圖

3 Label設定

程式碼:多種方法顯示label,程式碼註釋中有講解。

#方法一'''import pygletwindow = 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裝飾器@window.eventdef on_draw():    window.clear()    label.draw()pyglet.app.run()''''''#方法二import pyglet as pt#window = pt.window.Window() #預設視窗大小win = pt.window.Window(1000,1000) #指定視窗大小label = pt.text.Label('Hello, world',                          font_name='Times New Roman',                          font_size=36,                          x=win.width//2, y=win.height//2,                          anchor_x='center', anchor_y='center')                          #在一個相同名字的函式上使用@Win.event裝飾器#這個裝飾器的win就是上面定義[email protected] on_draw():    win.clear()    label.draw()pt.app.run()''''''#方法三import pyglet as ptwin = pt.window.Window(            #視窗大小設定            width=1000,            height=1000,            #視窗標題名            caption="第一個視窗",            #視窗大小可調節            resizable=True)label = pt.text.Label('Hello, world',                          font_name='Times New Roman',                          font_size=36,                          x=win.width//2, y=win.height//2,                          anchor_x='center', anchor_y='center')if __name__ == '__main__':    pt.app.run()    label.draw()'''#方法四import pygletgame_window = pyglet.window.Window(            width=1000,            height=1000,            caption="第一個視窗",            resizable=True)# 建立Label物件label = pyglet.text.Label('Hello, world',                          font_size=25,  # 字型不指定,使用預設的,大小為25                          x=game_window.width//2,                          y=game_window.height//2,                          anchor_x='center', anchor_y='center'                          )def show_label():    # 將初始的視窗內容刪除    game_window.clear()    # 新增文字,重新繪製視窗    label.draw()# 重寫on_draw方法,以後就會執行我們在show_label裡面指定的程式碼# set attribute的意思setattr(game_window, "on_draw", show_label)if __name__ == '__main__':    pyglet.app.run()

4 照片顯示

程式碼

#匯出模組import pyglet#視窗定義#window = pyglet.window.Window() #採用預設方法window = pyglet.window.Window(#視窗大小設定width=1000,height=1000,#視窗標題名caption="照片顯示",#視窗大小可調節,預設是False,不可調節resizable=True) #定義照片#注意特別之處,檔案py與jpg在同一個目錄下#一般這種都在根目錄下,或者指定路徑和目錄image = pyglet.resource.image('1221.jpg')#裝飾器法顯示@window.eventdef on_draw():    window.clear()    image.blit(0, 0)pyglet.app.run()

plglet照片顯示

5 計時器,程式碼

#定義計時器import pyglet#定義視窗全屏#window = pyglet.window.Window(fullscreen=True) #哈哈哈,deepinlinux的錄屏不支援這種全屏window = pyglet.window.Window(            #視窗大小設定            width=1000,            height=1000,            #視窗標題名            caption="計時器",            #視窗大小可調節            resizable=True) #定義計時器class Timer:    #初始化定義    def __init__(self):        self.label = pyglet.text.Label('00:00', font_size=100,                                        x=window.width//2, y=window.height//2,                                       anchor_x='center', anchor_y='center')        self.reset()    #定義重設函式    def reset(self):        self.time = 0        self.running = False        self.label.text = '00:00'        self.label.color = (255, 255, 255, 255)    #定義更新韓式    def update(self, dt):        if self.running:            self.time += dt            #python divmod() 函式把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)。            m, s = divmod(self.time, 60)            self.label.text = '%02d:%02d' % (m, s)            if m >= 5:                self.label.color = (180, 0, 0, 255)@window.event#定義視窗按鈕函式def on_key_press(symbol, modifiers):    #空格鍵按鈕定義,點選開始,再點選暫停    if symbol == pyglet.window.key.SPACE:        if timer.running:            timer.running = False        else:            if timer.time > 0:                timer.reset()            else:                timer.running = True    elif symbol == pyglet.window.key.ESCAPE:        window.close()@window.eventdef on_draw():    window.clear()    timer.label.draw()timer = Timer()pyglet.clock.schedule_interval(timer.update, 1/30.0)pyglet.app.run()

效果圖

==========未完待續========

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 屌炸了!太神奇的 SQL 查詢經歷,group by 慢查詢優化