簡體   English   中英

烏龜的筆畫可以改嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM