-
Notifications
You must be signed in to change notification settings - Fork 1
/
label.py
84 lines (73 loc) · 2.84 KB
/
label.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ______ ______
# | __ \.--.--.| __ \.-----.-----.--------.
# | __/| | || <| _ | _ | |
# |___| |___ ||___|__||_____|_____|__|__|__|
# |_____| Copyright 2009 © Nicolas Rougier
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
from pyglet.text import Label
class FadingLabel(Label):
def __init__(self, *args, **kwargs):
super(FadingLabel,self).__init__(*args, **kwargs)
self.visible = False
self.fadeout = 0.25
self._time = 0
def _fadeout_start(self, dt=0, start=False):
if start:
self._time = 0
pyglet.clock.schedule_interval(self.fadeout, 1/60.)
else:
self._time += dt
a = 1.0 - self._time/self.fadeout_time
if self._time > self.fadeout_time:
self.visible = False
pyglet.clock.unschedule(self.update)
else:
self.color = (255,255,255,int(a*255))
def _fadeout_do(self, dt=0, start=False):
if start:
self._time = 0
pyglet.clock.schedule_interval(self.fadeout, 1/60.)
else:
self._time += dt
a = 1.0 - self._time/self.fadeout_time
if self._time > self.fadeout_time:
self.visible = False
pyglet.clock.unschedule(self.update)
else:
self.color = (255,255,255,int(a*255))
def show(self, time=3.0, fadeout_time=0.25):
self.visible = True
self.fadeout_time = fadeout_time
pyglet.clock.schedule_once(self.fadeout, time, start=True)
def draw(self):
if self.visible:
super(Label,self).draw()
if __name__ == '__main__':
import pyglet
import pyglet.window
window = pyglet.window.Window()
label = FadingLabel(text='Hello world !',
font_name = 'Bitstream Vera Sans',
font_size=16,
anchor_x='center', anchor_y='center',
x=window.width//2, y=window.height//2)
label.show()
@window.event
def on_draw():
window.clear()
label.draw()
pyglet.app.run()