有可能改变乌龟的笔划吗?

2024-04-24 23:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用Python的turtle图形绘制一个条形图,我想简单地把钢笔做成一个厚正方形会更容易,这样我就可以画出这样的条形图,而不必担心制作几十个矩形并填充它们。

不过,当我使用turtle.shape('square')设置海龟形状时,它只会更改笔的外观,但对实际绘图没有影响:

enter image description here

有没有办法让海龟画一个矩形笔划,无论是通过内置的方法还是通过修改海龟文件?

我不想要像这样的圆边:

enter image description here


Tags: 图形绘图绘制外观形状条形图海龟shape
3条回答

好吧,我已经找到了一个完美的解决方案。

通过使用screen.register_shape("bar",( (width/2,0),(-width/2,0),(-width/2,height),(width/2,height) ))注册一个自定义形状,笔就变成了我们要绘制的条的确切大小。

然后,我们可以简单地循环遍历每个栏,用新值更新笔,并在转到下一个栏之前使用turtle.stamp将其标记到图形上。

我有两个解决这个问题的方法,我已经在不同的程序中使用过。

首先是你的邮票解决方案的变化。与其使用screen.register_shape()为每一行注册自定义多边形,不如使用一个方形海龟,并将每一行turtle.turtlesize()注册到要标记的矩形中:

from turtle import Turtle, Screen

STAMP_SIZE = 20  # size of the square turtle shape

WIDTH, LENGTH = 25, 125

yertle = Turtle(shape="square")
yertle.penup()

yertle.turtlesize(WIDTH / STAMP_SIZE, LENGTH / STAMP_SIZE)

yertle.goto(100 + LENGTH//2, 100)  # stamps are centered, so adjust X

yertle.stamp()

screen = Screen()
screen.exitonclick()

我的另一个解决方案是,当我需要绘制而不是图章时,进入turtle的tkinter基础并修改turtle的硬编码线端形状:

from turtle import Turtle, Screen
import tkinter as _

_.ROUND = _.BUTT

WIDTH, LENGTH = 25, 125

yertle = Turtle()
yertle.width(WIDTH)
yertle.penup()

yertle.goto(100, 100)

yertle.pendown()

yertle.forward(LENGTH)

screen = Screen()
screen.exitonclick()

看起来改变笔划本身的形状是不可能的。turtle.shape('square')只改变乌龟的形状,而不是笔划。我建议降低笔的尺寸,并创建一个绘制矩形的函数。你可以用这个画条。

相关问题 更多 >