Why Can't I Draw Multiple Houses in Python?

  • Context: Python 
  • Thread starter Thread starter brushman
  • Start date Start date
  • Tags Tags
    Python
Click For Summary
SUMMARY

The issue with drawing multiple houses in Python using the GASP library stems from the placement of the update_when('key_pressed') function within the draw_house function. This function call closes the graphics canvas after the first house is drawn, preventing any subsequent calls to draw_house(x, y) from executing. To resolve this, the update_when function should be called after all house drawings are completed, ensuring that the canvas remains open until the user decides to close it.

PREREQUISITES
  • Understanding of Python programming basics
  • Familiarity with the GASP graphics library
  • Knowledge of function definitions and calls in Python
  • Basic understanding of event handling in graphical applications
NEXT STEPS
  • Learn how to manage graphics events in GASP
  • Explore Python function scopes and their effects on program flow
  • Investigate how to maintain a graphics canvas open for multiple drawings
  • Study examples of using GASP for creating interactive graphics applications
USEFUL FOR

Beginner Python developers, educators teaching programming concepts, and anyone interested in creating graphical applications using the GASP library.

brushman
Messages
112
Reaction score
1
Basically, I have a function that draws a house. You enter (x, y) coordinates to pick where the house is drawn. However, it only let's me draw one house. Why can't I draw more then one house by calling the draw_house(x, y) function multiple times? Here's the code:

Code:
from gasp import *          # import everything from the gasp library

begin_graphics()            # open the graphics canvas


def draw_house(x, y):
    Box((x, y), 100, 100)         # the house
    Box((x+35, y), 30, 50)           # the door
    Box((x+20, y+60), 20, 20)           # the left window
    Box((x+60, y+60), 20, 20)           # the right window
    Line((x, y+100), (x+50, y+140))      # the left roof
    Line((x+50, y+140), (x+100, y+100))     # the right roof

    update_when('key_pressed')  # keep the canvas open until a key is pressed

draw_house(90, 90)
draw_house(200, 200)

end_graphics()              # close the canvas

In the code above, is draws the first house at (90, 90), but why doesn't it draw the second house?
 
Technology news on Phys.org
Caveat emptor: I don't know anything about python, so I might be way off in left field here.

The code starts off by the call to begin_graphics(), which opens the graphics canvas. Then there is the call to draw_house(90, 90), which causes the body of the draw_house function to execute, drawing a house whose opposite corners are at (90, 90) and (190, 190).

The last line of code in the draw_house function calls update_when, which, when a key is pressed, closes the graphics canvas (which I infer from the comment), so the call to draw_house(200, 200) fails, probably because the graphics canvas is closed.

That's what I think is going on.
 
Thanks, that was it.
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 18 ·
Replies
18
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 11 ·
Replies
11
Views
2K
  • · Replies 7 ·
Replies
7
Views
8K
  • · Replies 1 ·
Replies
1
Views
1K