def update(self, *args):
"""
Handles the selection and keyboard-input
parameters: tuple arguments for the update (first argument should be an instance pygame.event.Event)
return values: -
"""
if len(args) > 0 and self.isActive():
event = args[0]
if event.type == pygame.KEYDOWN and self.isFocused():
if event.key == pygame.K_LEFT:
self.moveCursor(-1)
elif event.key == pygame.K_RIGHT:
self.moveCursor(1)
elif event.key == pygame.K_BACKSPACE or event.key == pygame.K_DELETE:
if self._selection == self._cursor:
if event.key == pygame.K_DELETE:
self.delete(self._selection + 1, CURSOR)
else:
self.delete(self._selection - 1, CURSOR)
self.moveCursor(-1)
else:
self.delete(SELECTION, CURSOR)
self.setCursor(self._sort(SELECTION, CURSOR)[0])
else:
char = event.unicode.encode("ascii", "ignore")
if (char != "" and (char == " " or not char.isspace())
and self._validation(self._text + char, self._text, self)):
self.delete(SELECTION, CURSOR)
s = self._sort(SELECTION, CURSOR)[0]
self.insert(s, char)
self.setCursor(s + 1)
elif event.type == pygame.MOUSEMOTION:
if self.rect.collidepoint(event.pos) and event.buttons[0]:
self.setSelection(SELECTION, self._posToIndex(event.pos[0] - self.rect.x))
elif event.type == pygame.MOUSEBUTTONDOWN:
if self.rect.collidepoint(event.pos):
self.setCursor(self._posToIndex(event.pos[0] - self.rect.x))
super(Entry, self).update(*args)
评论列表
文章目录