Title: Inputbox ModuleAuthor: Timothy Downs Description: A function to display an inputbox and return the inputted text string. Download: inputbox.py pygame version required: Any Comments: While pygame still lacks a formal gui module, a variety of informal toolkit components are starting to appear. This inputbox module presents a simple text box and blocks until a lowercase text string is entered. The prompt ("Name" in the picture above) is supplied when the ask function is called, and the user is able to use the backspace key to edit their input. |
# by Timothy Downs, inputbox written for my map editor # This program needs a little cleaning up # It ignores the shift key # And, for reasons of my own, this program converts "-" to "_" # A program to get user input, allowing backspace etc # shown in a box in the middle of the screen # Called by: # import inputbox # answer = inputbox.ask(screen, "Your name") # # Only near the center of the screen is blitted to import pygame, pygame.font, pygame.event, pygame.draw, string from pygame.locals import * def get_key(): while 1: event = pygame.event.poll() if event.type == KEYDOWN: return event.key else: pass def display_box(screen, message): "Print a message in a box in the middle of the screen" fontobject = pygame.font.Font(None,18) pygame.draw.rect(screen, (0,0,0), ((screen.get_width() / 2) - 100, (screen.get_height() / 2) - 10, 200,20), 0) pygame.draw.rect(screen, (255,255,255), ((screen.get_width() / 2) - 102, (screen.get_height() / 2) - 12, 204,24), 1) if len(message) != 0: screen.blit(fontobject.render(message, 1, (255,255,255)), ((screen.get_width() / 2) - 100, (screen.get_height() / 2) - 10)) pygame.display.flip() def ask(screen, question): "ask(screen, question) -> answer" pygame.font.init() current_string = [] display_box(screen, question + ": " + string.join(current_string,"")) while 1: inkey = get_key() if inkey == K_BACKSPACE: current_string = current_string[0:-1] elif inkey == K_RETURN: break elif inkey == K_MINUS: current_string.append("_") elif inkey <= 127: current_string.append(chr(inkey)) display_box(screen, question + ": " + string.join(current_string,"")) return string.join(current_string,"") def main(): screen = pygame.display.set_mode((320,240)) print ask(screen, "Name") + " was entered" if __name__ == '__main__': main()
From: zgoda |
Date: April 23, 2003 19:03 GMT |
Unfortunately, I cann't find any of these "informal toolkits". I think pygame is a bit lacking here - there are SDL UI libraries present. |
From: nexus |
Date: June 17, 2004 06:18 GMT |
Just what I was looking for a input, need to make someone enter there name and save to variable. Thank's for the code. |
Main - Repository - Submit - News |