Search code examples
pythonpython-turtlescreen-size

How to get your screen height and width on a mac using python?


I am writing a program for python turtle and i want it to fill the entire screen. I am using turtle.screensize() to try and do it but i don't know my screen resolution.

This is my code:

import turtle

tur = turtle.Turtle()
tur.pensize(2)
tur.speed(5)
tur.color("blue")

def triangle():
    for i in range(3): # Triangle
        tur.forward(100)
        tur.left(120)

def square():
    for i in range(4): # Square
        tur.forward(100)
        tur.left(90) # 90 * 4 = 360

def pentagon():
    for i in range(5): # Pentagon
        tur.forward(90)
        tur.left(72) # 72 * 5 = 360

def hexagon():
    for i in range(6): # Hexagon
        tur.forward(80)
        tur.left(60) # 60 * 6 = 360

def heptagon():
    for i in range(7): # Heptagon
        tur.forward(75)
        tur.left(51.4285714286)  # 51.4285714286 * 7 = 360

def octagon():
    for i in range(8): # Octagon
        tur.forward(70)
        tur.left(45) # 45 * 8 = 360

def nonagon():
    for i in range(9): # Nonagon
        tur.forward(65)
        tur.left(40) # 40 * 9 = 360

def decagon():
    for i in range(10): # Decagon
        tur.forward(60)
        tur.left(36) # 36 * 10 = 360

def hendecagon():
    for i in range(11): # Hendecagon
        tur.forward(55)
        tur.left(32.7272727273) # 32.7272727273 * 11 = 360

def duodecagon():
    for i in range(12): # Duodecagon
        tur.forward(50)
        tur.left(30)

def icositetragon():
    for i in range(24): # Icositetragon
        tur.forward(25)
        tur.left(15)

def main():
    print("1 = Triangle \n" + "2 = Square \n" + "3 = Pentagon \n" + "4 = Hexagon \n" + "5 = Heptagon \n" + "6 = Octagon")
    print("7 = Nonagon \n" + "8 = Decagon \n" + "9 = Hendecagon \n" + "10 = Duodecagon \n" + "11 = Icositetragon")
    number = input("Choose a shape number: ")
    if number == "1":
        triangle()
    elif number == "2":
        square()
    elif number == "3":
        pentagon()
    elif number == "4":
        hexagon()
    elif number == "5":
        heptagon()
    elif number == "6":
        octagon()
    elif number == "7":
        nonagon()
    elif number == "8":
        decagon()
    elif number == "9":
        hendecagon()
    elif number == "10":
        duodecagon()
    elif number == "11":
        icositetragon()
    else:
        print("Not a number or number incorrect")
        return
    tur.penup()
    tur.forward(200)

main()

turtle.screensize()
turtle.mainloop()

Solution

  • Rather than screensize(), what you want is setup(), which, along with pixel sizes, accepts floating point values indication what percentage of the screen you want. In your case, this would be setup(width=1.0, height=1.0). A simple example:

    from turtle import Screen, Turtle
    
    polygons = [
        (3, "Triangle"),
        (4, "Square"),
        (5, "Pentagon"),
        (6, "Hexagon"),
    ]
    
    def polygon(sides):
        for _ in range(sides):  # Triangle
            turtle.forward(100)
            turtle.left(360 / sides)
    
    def main():
        for index, (_, name) in enumerate(polygons, start=1):
            print(f"{index} = {name}")
    
        number = int(input("Choose a shape number: ")) - 1
    
        if 0 <= number < len(polygons):
            polygon(polygons[number][0])
        else:
            print("Number incorrect")
            return
    
        turtle.penup()
        turtle.forward(200)
    
    screen = Screen()
    screen.setup(width=1.0, height=1.0)
    
    turtle = Turtle()
    turtle.pensize(2)
    turtle.color('blue')
    
    main()
    
    screen.exitonclick()
    

    Under Mac OSX, this doesn't appear to include the screen space taken up by the dock. But "Automatically hide and show the Dock" in Preferences can take of this.