Jed Rembold
September 26, 2025
When the final line of the code to the right is run, what type of
variable is x?
integerfloatstringdef func(A):
m = 2 * A
n = m + m + m
print(n)
y = input('Enter an integer between 1 and 100: ')
x = func(y)
print(type(x))
GWindow functionfrom pgl import GWindow, GRect
GW_WIDTH = 500
GW_HEIGHT = 200
gw = GWindow(GW_WIDTH, GW_HEIGHT)
rect = GRect(150, 50 ,200, 100)
rect.set_color("Blue")
rect.set_filled(True)
gw.add(rect)
Functions to create simple geometric objects:
GRect( |||x|||, |||y|||, |||width|||, |||height||| )GOval( |||x|||, |||y|||, |||width|||, |||height||| )GLine( |||x₁|||, |||y₁|||, |||x₂|||, |||y₂||| )GWindowWe’ve already shown creation:
gw = GWindow(|||width|||, |||height|||)You have several more operations that you can apply to the
GWindow object:
| Method | Description |
|---|---|
|||gw|||.add(|||object|||) |
Adds an object to the window |
|||gw|||.add(|||object|||, |||x|||, |||y|||) |
Adds an object to the window after moving it to (x,y) |
|||gw|||.remove(|||object|||) |
Removes an object from the window |
|||gw|||.get_width() |
Returns the width of the graphics window in pixels |
|||gw|||.get_height() |
Returns the height of the graphics window in pixels |
GObject Hierarchy
GObject type represents the
collection of all graphical objectsGFillableObject type represents
those that have a fillable interiorGObjectsobject is the name of any specific
instance.| Method | Description |
|---|---|
|||object|||.get_x() |
Returns the x coordinate of this object |
|||object|||.get_y() |
Returns the y coordinate of this object |
|||object|||.get_width() |
Returns the width of this object |
|||object|||.get_height() |
Returns the height of this object |
|||object|||.set_color(|||color|||) |
Sets the color of the object to the specified color |
GFillableObjects| Method | Description |
|---|---|
|||object|||.set_filled(|||bool|||) |
Sets the fill state of the object |
|||object|||.set_fill_color(|||color|||) |
Sets the color to be used to fill the interior, otherwise same as the outer line |
|||object|||.get_fill_color() |
Gets the current color used to display the object interior |
|||object|||.is_filled() |
Returns True or False depending on whether the object is currently filled |
gw = GWindow(400, 400)
head = GOval(20, 20, 360, 360)
head.set_fill_color("yellow")
head.set_filled(True)
gw.add(head)
reye = GOval(110, 100, 40, 40)
reye.set_filled(True)
gw.add(reye)
leye = GOval(250, 100, 40, 40)
leye.set_filled(True)
gw.add(leye)
mouth = GLine(150, 250, 250, 250)
mouth.set_line_width(5)
gw.add(mouth)
Which of the below images would be produced by the following code?
gw = GWindow(200,200)
for c in range(0,10):
for r in range(0,10):
rect = GRect(20*c,20*r,20,20)
if (r+c) % 2 != 0:
rect.set_filled(True)
gw.add(rect)
Sometimes you need to add some text to the window
Can display any string using GLabel
using the following format:
msg = GLabel(|||string to add|||, |||x location|||, |||y location|||)Here |||string to add||| is the text
you want to display, and |||x location|||
and |||y location||| are the (x,y)
coordinates of where you want to place the origin of the label.
GLabel class relies on some
geometrical concepts that are derived from classical typesetting
GLabel has several special methods
that you can use to interact with it
You can use: get_width(),
get_height(),
get_ascent(), and
get_descent() methods to obtain the
geometric properties
You can set a special font for the label using
labelname.set_font(font)Where font is a string comprised of
the following elements:
italicboldpt,
px, or em)serif,
sans-serif, or
monospace) to ensure that the label can
displaygw = GWindow(500, 200)
msg = GLabel("hello world!", 50, 100)
msg.set_font("italic bold 80px 'times new roman'")
gw.add(msg)
GLabelGLabel without
setting its location.set_font()
method to set the desired font (which could change the size)GLabel at the
newly calculated positiongw = GWindow(500, 200)
msg = GLabel("hello world!")
msg.set_font("italic bold 20px 'times new roman'")
x = gw.get_width() / 2 - msg.get_width() / 2
y = gw.get_height() / 2 + msg.get_ascent() / 2
gw.add(msg, x, y)