2024-04-24 23:47:24 发布
网友
我需要用Python的turtle图形绘制一个条形图,我想简单地把钢笔做成一个厚正方形会更容易,这样我就可以画出这样的条形图,而不必担心制作几十个矩形并填充它们。
不过,当我使用turtle.shape('square')设置海龟形状时,它只会更改笔的外观,但对实际绘图没有影响:
turtle.shape('square')
有没有办法让海龟画一个矩形笔划,无论是通过内置的方法还是通过修改海龟文件?
我不想要像这样的圆边:
好吧,我已经找到了一个完美的解决方案。
通过使用screen.register_shape("bar",( (width/2,0),(-width/2,0),(-width/2,height),(width/2,height) ))注册一个自定义形状,笔就变成了我们要绘制的条的确切大小。
screen.register_shape("bar",( (width/2,0),(-width/2,0),(-width/2,height),(width/2,height) ))
然后,我们可以简单地循环遍历每个栏,用新值更新笔,并在转到下一个栏之前使用turtle.stamp将其标记到图形上。
turtle.stamp
我有两个解决这个问题的方法,我已经在不同的程序中使用过。
首先是你的邮票解决方案的变化。与其使用screen.register_shape()为每一行注册自定义多边形,不如使用一个方形海龟,并将每一行turtle.turtlesize()注册到要标记的矩形中:
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')只改变乌龟的形状,而不是笔划。我建议降低笔的尺寸,并创建一个绘制矩形的函数。你可以用这个画条。
好吧,我已经找到了一个完美的解决方案。
通过使用
screen.register_shape("bar",( (width/2,0),(-width/2,0),(-width/2,height),(width/2,height) ))
注册一个自定义形状,笔就变成了我们要绘制的条的确切大小。然后,我们可以简单地循环遍历每个栏,用新值更新笔,并在转到下一个栏之前使用
turtle.stamp
将其标记到图形上。我有两个解决这个问题的方法,我已经在不同的程序中使用过。
首先是你的邮票解决方案的变化。与其使用
screen.register_shape()
为每一行注册自定义多边形,不如使用一个方形海龟,并将每一行turtle.turtlesize()
注册到要标记的矩形中:我的另一个解决方案是,当我需要绘制而不是图章时,进入turtle的tkinter基础并修改turtle的硬编码线端形状:
看起来改变笔划本身的形状是不可能的。
turtle.shape('square')
只改变乌龟的形状,而不是笔划。我建议降低笔的尺寸,并创建一个绘制矩形的函数。你可以用这个画条。相关问题 更多 >
编程相关推荐