是否有可能改变龟的笔划?

时间:2014-12-02 14:57:05

标签: python graphics graph turtle-graphics

我需要使用Python的乌龟图形绘制一个条形图,我认为简单地将笔做成一个厚方形会更容易,所以我可以像这样绘制条形图而不必担心制作数十个矩形并将它们填入。

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

enter image description here

有没有办法让乌龟实际绘制一个矩形笔划,无论是通过内置方法还是通过修改龟文件?

我不想要圆形边缘,如下所示:

enter image description here

5 个答案:

答案 0 :(得分:4)

好吧,我已经找到了一个完全符合我喜欢的解决方案。

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

我已经在各种程序中使用过这个问题的两个解决方案。

第一个是您的印章解决方案的变体。不是使用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()

当我需要绘制而不是时,我的另一个解决方案是进入海龟的tkinter基础并修改海龟的硬编码线结束形状本身:

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()

答案 3 :(得分:0)

为什么不增加线宽,还是我误解了你?

turtle.width(...)

如果更改宽度无效,请提供部分代码或包含图片。

答案 4 :(得分:0)

像这样使用多个图章:

import turtle

turtle.shape("square")
for count in range(x):
    turtle.stamp()
    turtle.forward(1)