如何在Mac上用Python获取屏幕分辨率以实现Turtle全屏绘图
让Python Turtle程序铺满整个屏幕的解决方法
问题分析
你当前使用turtle.screensize()无法实现窗口铺满屏幕,是因为这个函数作用是设置画布的虚拟尺寸,而非调整显示窗口的大小。要让窗口铺满整个屏幕,需要使用turtle.setup(),同时可以通过代码自动获取你的屏幕分辨率,无需手动查询。
实现步骤
自动获取屏幕分辨率
Turtle基于Tkinter,可以借助Tkinter获取当前屏幕的宽高:import tkinter as tk root = tk.Tk() screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() root.destroy() # 销毁临时窗口设置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
相关产品推荐
相关产品推荐

