-
Notifications
You must be signed in to change notification settings - Fork 0
/
textinput.py
49 lines (46 loc) · 1.62 KB
/
textinput.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
import pygame
BLUE = (54,110,159)
WHITE = (255, 255, 255)
GOLD = (254, 205, 40)
def empty():
return
class Input:
def __init__(self, screen):
self.message = ""
self.shift = False
self.x = 0
self.y = 0
self.screen = screen
self.lastKeys = pygame.key.get_pressed()
self.maxlength = 25
self.backspace_delay = 0
self.on_return = empty
def update(self,events):
keys = pygame.key.get_pressed()
if(keys[pygame.K_LSHIFT] or keys[pygame.K_RSHIFT]):
self.shift = True
else:
self.shift = False
if(keys[pygame.K_BACKSPACE]):
if(self.backspace_delay == 0):
self.message = self.message[:-1]
self.backspace_delay = 1
else:
self.backspace_delay -= 1
if(keys[pygame.K_SPACE] and not self.lastKeys[pygame.K_SPACE] and len(self.message) < self.maxlength):
self.message += " "
for i in range(pygame.K_EXCLAIM, pygame.K_DELETE):
if(keys[i] and not self.lastKeys[i] and len(self.message) < self.maxlength):
keyname = pygame.key.name(i)
if(self.shift):
keyname = keyname.upper();
self.message += keyname;
if(keys[pygame.K_RETURN] and self.message != ""):
self.on_return()
self.message = ""
self.lastKeys = keys
def draw(self):
font = pygame.font.Font(None, 40)
size = font.size(self.message)
ren = font.render(self.message,0,BLUE,GOLD)
self.screen.blit(ren,(self.x, self.y) )