乌龟的笔画可以更改吗?

7
我需要使用Python的turtle图形绘制条形图,我觉得把笔尖变成一个粗的正方形可能更容易绘制条形,而不必担心制作许多矩形并填充它们。
然而,当我使用时,它只改变了笔尖的外观,对实际的绘图没有影响:
是否有一种方法可以使turtle实际绘制一个矩形线段,无论是通过内置方法还是通过修改turtle文件?
我不想要圆角边缘,像这样:

1
你尝试过使用turtle.pensize(int)函数吗?其中参数是画笔大小(以像素为单位)? - adanot
2
是的,这只是制作一个更大的椭圆。 - Matt
5个回答

5
回答标题中提出的问题:不能直接更改笔画(请参阅cdlane的答案,可能通过修改来自tkinter的硬编码值来实现)
然而,我在问题正文中找到了一个解决方法。
可以注册一个自定义的笔形(在本例中代表酒吧的确切形状和大小),如下所示:
screen.register_shape("bar", ((width / 2, 0), (-width / 2, 0), (-width / 2, height), (width / 2, height)))`

我们可以通过简单地循环遍历每个条形图,使用新的值更新笔的形状,并使用 turtle.stamp 将完成的条形图盖章到图表上,无需绘图。

3

看起来无法改变笔画本身的形状。 turtle.shape('square') 只会改变海龟的形状,而不是笔画。我建议降低笔画大小,并创建一个绘制矩形的函数。您可以使用此函数来绘制条形图。


只要使用 turtle.stamp()turtle.shape("square") 就能够工作。参见此答案 - ggorlen

3
我有两种解决这个问题的方法,在各种程序中都使用过。
第一种方法是对您的印章解决方案进行变化。而不是使用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()

0

像这样使用多个印章:

import turtle

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

0
其实,有一种官方的方法可以实现这个功能。您可以使用turtle.shape()函数来设置形状,并且通过使用screen.register_shape('你的文件名')函数可以自己注册形状。
步骤如下:
  1. 获取一个.gif文件,文件名是你想要的图形“xxx.gif”。
  2. 将此gif文件放在与您的py代码文件相同的文件夹中。
  3. 使用screen(您的屏幕变量).register_shape('xxx.gif')
  4. turtle(您的turtle变量).shape('xxx.gif'),后缀必须跟随。
然后完成了。

顺便提一下,使用stamp()函数而不是让海龟绘制来制作你的痕迹。 - Hectic_tong
如果您仔细阅读我的文本... - Hectic_tong
我需要澄清一下,这个答案并不完全与被接受的答案相同,因为它没有涉及到注册一个 .gif 文件。而导入一个 .gif 文件肯定会使形状更加灵活。 - Hectic_tong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接