You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mac上用Python获取屏幕分辨率以实现Turtle全屏绘图

让Python Turtle程序铺满整个屏幕的解决方法

问题分析

你当前使用turtle.screensize()无法实现窗口铺满屏幕,是因为这个函数作用是设置画布的虚拟尺寸,而非调整显示窗口的大小。要让窗口铺满整个屏幕,需要使用turtle.setup(),同时可以通过代码自动获取你的屏幕分辨率,无需手动查询。

实现步骤

  1. 自动获取屏幕分辨率
    Turtle基于Tkinter,可以借助Tkinter获取当前屏幕的宽高:

    import tkinter as tk
    root = tk.Tk()
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    root.destroy()  # 销毁临时窗口
    
  2. 设置Turtle窗口铺满屏幕
    使用turtle.setup()设置窗口尺寸为屏幕分辨率,同时加上startx=0, starty=0让窗口从屏幕左上角开始:

    turtle.setup(width=screen_width, height=screen_height, startx=0, starty=0)
    

修改后的完整代码

import turtle
import tkinter as tk

# 获取屏幕分辨率
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.destroy()

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)

# 设置窗口铺满屏幕
turtle.setup(width=screen_width, height=screen_height, startx=0, starty=0)
main()

turtle.mainloop()

额外说明

  • 若希望画布范围和窗口大小匹配,可以在设置窗口后添加turtle.screensize(screen_width, screen_height)。
  • 部分系统的任务栏会遮挡窗口,若需要完全覆盖屏幕,可将宽高微调为screen_width + 10、screen_height + 10,具体数值根据系统情况调整。

内容的提问来源于stack exchange,提问作者duckquy puf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:10