Advertisement
Guest User

Pygame text editing example

a guest
Jun 2nd, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. # Pygame text editing example
  2. # Author: Weeble
  3. # License: http://www.opensource.org/licenses/MIT
  4.  
  5. import pygame
  6.  
  7. pygame.init()
  8.  
  9. screen = pygame.display.set_mode((1024,200))
  10.  
  11. text = u"Is this effective?"
  12. cursorpos = 10
  13. times = pygame.font.SysFont("Times New Roman", 100, False, True)
  14. pygame.key.set_repeat(300,50)
  15.  
  16. while True:
  17.     screen.fill((255,255,255))
  18.  
  19.     # Draw the text
  20.     textsurf = times.render(text, True, (0,0,0))
  21.     screen.blit(textsurf, (0,40))
  22.  
  23.     # Draw the cursor
  24.     lefttext = text[:cursorpos]
  25.     lefttextwidth = times.size(lefttext)[0]
  26.     if cursorpos > 0 and len(text) > 0:
  27.         leftchar = text[cursorpos - 1]
  28.         _, xmax, _, _, advance = times.metrics(leftchar)[0]
  29.         if xmax > advance:
  30.             # Character immediately left of the cursor has
  31.             # an overhang.
  32.             lefttextwidth -= xmax - advance
  33.     screen.fill((0,0,0),(lefttextwidth, 40, 2, times.get_height()))
  34.  
  35.     pygame.display.flip()
  36.  
  37.     ev = pygame.event.wait()
  38.     if ev.type == pygame.QUIT:
  39.         break
  40.     elif ev.type == pygame.KEYDOWN:
  41.         if ev.key == pygame.K_BACKSPACE and cursorpos > 0:
  42.             cursorpos -= 1
  43.             text = text[:cursorpos] + text[cursorpos+1:]
  44.         if ev.key == pygame.K_DELETE and cursorpos < len(text):
  45.             text = text[:cursorpos] + text[cursorpos+1:]
  46.         if ev.key == pygame.K_LEFT and cursorpos > 0:
  47.             cursorpos -= 1
  48.         if ev.key == pygame.K_RIGHT and cursorpos < len(text):
  49.             cursorpos += 1
  50.         if ev.key == pygame.K_ESCAPE:
  51.             break
  52.         if ev.unicode != '' and not (0<=ord(ev.unicode)<=31) and not (127<=ord(ev.unicode)<=159):
  53.             text = text[:cursorpos] + ev.unicode + text[cursorpos:]
  54.             cursorpos+=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement