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