欢迎光临散文网 会员登陆 & 注册

气轻pyglet22 导入字体

2023-04-06 08:05 作者:气轻  | 我要投稿

 

Pyglet可以导入字体,函数font.add_file(fontname)可导入指定字体,函数font.add_directory(dirname)可导入文件夹dirname中左右字体。

 

from pyglet.gl import *

from pyglet.window import mouse

from pyglet import font

import os

##from WindowShot import *

 

WIDTH = 800

HEIGHT = 600

 

wtitlt = 'pyglet font'

 

class Window(pyglet.window.Window):

 

    def __init__(self,*args,**kwargs):

        super().__init__(*args,**kwargs)

        self.batch = pyglet.graphics.Batch()

        pyglet.clock.schedule_interval(self.callback,1/30)

 

        font.add_directory('C:\Windows\Fonts')          # 添加指定文件夹中字体

        self.LabelList = []

        self.ShowList = []

        self.labelshow = LabelManager()

        self.labelshow.LabelAppend(self.LabelList,5)

 

        self.labelshow.LabelDraw(self.LabelList,self.ShowList,self.batch)

 

    def on_mouse_press(self, x, y, symbol, modifiers):

        if symbol == mouse.LEFT:

            self.close()

 

    def on_draw(self):

        window.clear()

        self.batch.draw()

 

    def callback(self,dt):

        for s in self.ShowList:

            s.delete()

        self.labelshow.LabelDraw(self.LabelList,self.ShowList,self.batch)

        self.labelshow.LabelAppend(self.LabelList,dt)

 

        if self.labelshow.i == 4 and self.LabelList[-1].finish:

            pyglet.app.exit()

 

class LabelManager:

    def __init__(self):

        self.dt = 0

        self.pos = [[800,   0, 200, 500],

                    [800, 800, 350, 350],

                    [0, 0, 500, 200],

                    [0, 600, 650,  50]]

        self.i = 0

        self.label = ['中文字体 华文彩云','中文字体 华文琥珀','日本語フォント','日本語フォント']

        self.fnames = ['华文彩云',

                  '华文琥珀',

                  'MS PMincho',

                  'UD Digi Kyokasho N-B',

                  ]

        self.c = [(192, 100, 0,255),(0, 255, 0,255),

                  (0, 0, 255,255),(0, 100, 100,255)]

 

    def LabelAppend( self,labelslist,dt ):

        self.dt += dt

        n = len(labelslist)

        if self.dt > 4 and n < 4:

            self.dt = 0

            labelslist.append(LabelGenerator(self.pos[self.i]))

            self.i += 1

 

    def LabelDraw(self,labelslist,showlist,batch):

        for i, t in enumerate(labelslist):

            t.OnShow(showlist,self.fnames[i],self.c[i],self.label[i],batch)

 

class LabelGenerator:

    def __init__(self,coordinate):

        self.x,self.y,self.tx,self.ty = coordinate

        self.inc = 5

        self.finish = False

 

    def OnShow( self,LabelBuf,fname,c,label,batch ):

        label = pyglet.text.Label(label, font_name=fname,

            font_size=26, color=c, x=self.x, y=self.y,

            anchor_x='center', anchor_y='center', batch=batch)

        LabelBuf.append(label)

 

        if self.x != self.tx:

            self.x = MovetoSite( self.tx,self.x,self.inc )

        if self.y != self.ty:

            self.y = MovetoSite( self.ty,self.y,self.inc )

        if self.x == self.tx and self.y == self.ty:

            self.finish = True

 

def MovetoSite( p0,p,dp ):

 

    newp = p - (p-p0)/abs(p-p0)*dp

    if abs(newp - p0) < dp:

        newp = p0

 

    return newp

 

if __name__ == '__main__':

    window = Window(width=WIDTH,height=HEIGHT,caption=wtitlt)

    window.set_location(200, 200)

    pyglet.gl.glClearColor(0.8,0.8,0.8,0)

    pyglet.app.run()

 

执行结果


气轻pyglet22 导入字体的评论 (共 条)

分享到微博请遵守国家法律