[英]Is it possible to change turtle's pen stroke?
我需要使用 Python 的海龜圖形繪制條形圖,我認為簡單地將筆制作成一個厚正方形會更容易,這樣我就可以像這樣繪制條形,而不必擔心制作數十個矩形並填充它們。
但是,當我使用turtle.shape('square')
設置海龜形狀時,它只會改變筆的外觀,但對實際繪圖沒有影響:
有沒有辦法讓海龜實際繪制矩形筆划,無論是通過內置方法還是通過修改海龜文件?
我不想要圓邊,像這樣:
要回答這個問題問的標題:不,這是不可能直接改變筆划(見cdlane的回答一個可能的方式,通過修改該硬編碼值做tkinter
)。
但是,我確實找到了問題正文中提出的用例的解決方法。
自定義筆形狀(在這種情況下,代表條的確切形狀和大小)可以像這樣注冊:
screen.register_shape("bar", ((width / 2, 0), (-width / 2, 0), (-width / 2, height), (width / 2, height)))`
然后我們可以簡單地遍歷每個條形,用新值更新鋼筆形狀,並使用turtle.stamp
將完成的條形標記到圖形上,無需繪制。
看起來改變筆划本身的形狀是不可能的。 turtle.shape('square')
只改變烏龜的形狀,而不是筆觸。 我建議降低筆的大小,並創建一個繪制矩形的函數。 您可以使用它來繪制條形圖。
我在各種程序中使用了兩個解決方案來解決這個問題。
第一個是您的郵票解決方案的變體。 不要使用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()
我的另一個解決方案是,當我需要draw而不是stamp 時,是進入海龜的 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()
為什么不增加線寬,還是我誤解了你?
turtle.width(...)
如果更改寬度沒有幫助,請提供部分代碼或包含圖片。
像這樣使用多個郵票:
import turtle
turtle.shape("square")
for count in range(x):
turtle.stamp()
turtle.forward(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.