杰瑞科技汇

Python里TurtleScreen怎么用?

turtle.Screen() 是 Python turtle 模块中用于创建和操作绘图窗口(也称为画布)的核心类,你可以把它想象成一只小乌龟在上面爬行绘画的“画板”或“舞台”。

Python里TurtleScreen怎么用?-图1
(图片来源网络,侵删)

在使用 turtle 模块时,你通常会同时用到两个对象:

  1. Screen 对象:代表画布本身,你可以用它来设置窗口的标题、大小、背景颜色等。
  2. Turtle 对象:代表那只可以绘画的“小乌龟”,你可以用它来移动、转向、改变颜色、画线等。

基本用法和工作流程

下面是一个最基本的使用流程,帮助你理解 ScreenTurtle 是如何协同工作的。

导入模块并创建 Screen 和 Turtle 对象

import turtle
# 1. 创建一个 Screen 对象,这会弹出一个绘图窗口
screen = turtle.Screen()
# 2. 创建一个 Turtle 对象,它会出现在屏幕上
my_turtle = turtle.Turtle()
# 3. 你可以让 my_turtle 在 screen 上绘画了
my_turtle.forward(100)  # 向前移动100像素
my_turtle.left(90)     # 向左转90度
my_turtle.forward(100) # 再向前移动100像素
# 4. (重要!)保持窗口打开,直到用户点击关闭
screen.mainloop() # 或者使用 turtle.done()

当你运行这段代码时,会看到一个窗口弹出,里面有一只小乌龟画出了一个直角。


turtle.Screen() 的常用方法和属性

Screen 对象提供了很多方法来控制窗口的外观和行为,以下是一些最常用的:

Python里TurtleScreen怎么用?-图2
(图片来源网络,侵删)

设置窗口标题

titlestring)`栏文本。

screen.title("我的第一个海龟绘图")

设置窗口大小

  • screensize(width, height, bg): 设置画布的宽度和高度(单位是像素),并可以设置背景颜色。
  • setup(width, height, startx, starty): 设置整个主窗口的大小和位置。
# 设置画布大小为 800x600 像素,背景为浅蓝色
screen.screensize(800, 600, "lightblue")
# 设置主窗口大小为 1000x700,并在屏幕中央打开
screen.setup(1000, 700, 0, 0)

设置背景颜色

bgcolor(color) 设置画布的背景颜色,颜色可以是颜色名称(如 "red", "green")或十六进制值(如 "#FF0000")。

screen.bgcolor("lightgreen")

控制窗口事件

  • exitonclick(): 当用户点击窗口时,程序退出并关闭窗口。
  • mainloop()turtle.done(): 启动事件循环,让窗口保持打开状态,等待用户交互(如点击),这是程序结束前必须调用的方法,否则窗口会一闪而过。
# 程序会一直运行,直到你点击窗口的关闭按钮
screen.mainloop()
# 或者
# turtle.done() # 两者功能类似

获取窗口信息

  • window_width(): 返回窗口的当前宽度。
  • window_height(): 返回窗口的当前高度。
print(f"窗口宽度: {screen.window_width()}")
print(f"窗口高度: {screen.window_height()}")

使用 tracer()update() 实现动画

默认情况下,海龟的每一步移动都会立即在屏幕上绘制出来,对于复杂的动画,这可能会很慢。tracer()update() 可以用来优化性能。

  • tracer(n=0): 关闭屏幕的自动更新,设置 n=0 表示完全不更新,n=1 表示每次更新后只重绘一次。
  • update(): 手动重绘屏幕,当你完成了一系列不希望立即显示的绘图操作后,调用此方法一次性显示结果。
import turtle
screen = turtle.Screen()
screen.tracer(0) # 关闭自动更新
artist = turtle.Turtle()
artist.speed(0) # 设置为最快速度
# 绘制一个复杂的图形,比如一个旋转的螺旋
for i in range(200):
    artist.forward(i)
    artist.left(91)
# 手动更新屏幕,一次性显示所有内容
screen.update()
screen.mainloop()

如果不使用 tracerupdate,你会看到海龟一步一步地画出螺旋,过程会很慢且不流畅。

Python里TurtleScreen怎么用?-图3
(图片来源网络,侵删)

监听键盘事件

listen(): 让屏幕开始监听键盘事件。 onkey(function, key): 当按下指定的按键时,调用指定的函数。

import turtle
def move_forward():
    artist.forward(50)
def turn_left():
    artist.left(45)
screen = turtle.Screen()
screen.title("键盘控制海龟")
artist = turtle.Turtle()
artist.shape("turtle")
# 监听键盘
screen.listen()
screen.onkey(move_forward, "Up")      # 按上箭头键前进
screen.onkey(turn_left, "Left")       # 按左箭头键左转
screen.mainloop()

你可以用键盘上的上箭头和左箭头来控制海龟了。


完整示例:绘制一个彩色五角星

这个例子综合了 ScreenTurtle 的多种用法。

import turtle
import time
# --- 1. 设置画布 ---
screen = turtle.Screen()
screen.title("彩色五角星")
screen.bgcolor("black") # 黑色背景让星星更突出
screen.setup(600, 600)  # 设置一个固定大小的窗口
# --- 2. 创建海龟 ---
star = turtle.Turtle()
star.speed(1) # 设置为慢速,以便观察绘图过程
star.color("yellow") # 设置海龟和画笔的颜色
star.pensize(3)      # 设置画笔粗细
# --- 3. 绘制五角星的函数 ---
def draw_star(size):
    """绘制一个五角星"""
    for _ in range(5):
        star.forward(size)
        star.right(144) # 144度是画五角星的关键角度
# --- 4. 执行绘图 ---
draw_star(200)
# --- 5. 完成并保持窗口打开 ---
print("绘图完成!")
time.sleep(2) # 等待2秒,让用户看到结果
screen.bye()   # 关闭窗口
类/对象 作用 常用方法/属性
turtle.Screen() 画布/窗口 title(), bgcolor(), setup(), screensize(), mainloop(), listen(), onkey(), tracer()
turtle.Turtle() 画笔/海龟 forward(), backward(), left(), right(), penup(), pendown(), color(), begin_fill(), end_fill()

记住这个核心思想:Screen 是舞台,Turtle 是演员,你需要先搭建好舞台(Screen),然后才能让演员(Turtle)在上面表演(绘图)。

分享:
扫描分享到社交APP
上一篇
下一篇