Globals (state)
Helper Functions
Classes (later)
Define event handler
Create a frame
Register event handler
Start frame & timers
Example:
# SimpleGUI program template # Import the module import simplegui # Define global variables (program state) counter = 0 # Define "helper" functions def increment(): global counter counter += 1 # Define event handler functions def tick(): increment() print counter def buttonpress(): global counter counter = 0 # Create a frame frame = simplegui.create_frame("Simple GUI test", 100, 100) # Register event handlers timer = simplegui.create_timer(1000, tick) frame.add_button("Click me!", buttonpress) # Start frame and timers frame.start() timer.start()
Canvas (Drawing on GUI):
# first example of drawing on the canvas import simplegui # define draw handler def draw(canvas): canvas.draw_text("Hello!",[100, 100], 24, "White") canvas.draw_circle([100, 100], 2, 2, "Red") # create frame frame = simplegui.create_frame("Text drawing", 300, 200) # register draw handler frame.set_draw_handler(draw) # start frame frame.start()Interactive Drawing
# interactive application to convert a float in dollars and cents import simplegui # define global value value = 3.12 # Handle single quantity def convert_units(val, name): result = str(val) + " " + name if val > 1: result = result + "s" return result # convert xx.yy to xx dollars and yy cents def convert(val): # Split into dollars and cents dollars = int(val) cents = int(round(100 * (val - dollars))) # Convert to strings dollars_string = convert_units(dollars, "dollar") cents_string = convert_units(cents, "cent") # return composite string if dollars == 0 and cents == 0: return "Broke!" elif dollars == 0: return cents_string elif cents == 0: return dollars_string else: return dollars_string + " and " + cents_string # define draw handler def draw(canvas): canvas.draw_text(convert(value), [60, 110], 24, "White") # define an input field handler def input_handler(text): global value value = float(text) # create frame frame = simplegui.create_frame("Converter", 400, 200) # register event handlers frame.set_draw_handler(draw) frame.add_input("Enter value", input_handler, 100) # start frame frame.start()Timer. Timer update for specified time interval. Draw update 60Hz.
# Simple "screensaver" program. # Import modules import simplegui import random # Global state message = "Python is Fun!" position = [50, 50] width = 500 height = 500 interval = 2000 # Handler for text box def update(text): global message message = text # Handler for timer def tick(): x = random.randrange(0, width) y = random.randrange(0, height) position[0] = x position[1] = y # Handler to draw on canvas def draw(canvas): canvas.draw_text(message, position, 36, "Red") # Create a frame frame = simplegui.create_frame("Home", width, height) # Register event handlers text = frame.add_input("Message:", update, 150) frame.set_draw_handler(draw) timer = simplegui.create_timer(interval, tick) # Start the frame animation frame.start() timer.start()
No comments:
Post a Comment