2014-12-02 48 views
4

我需要使用Python的龜圖形繪製條形圖,並且我認爲簡單地將筆製作成厚方形會更容易,因此我可以繪製這樣的條形圖,而不必擔心製作數十個矩形並填充它們。可以改變龜的筆畫嗎?

當我設置使用turtle.shape('square')雖然烏龜形狀,它只是改變了筆的外觀,但對實際圖紙沒有影響:

enter image description here

有沒有辦法使龜的實際繪製一個矩形的筆畫,無論是通過內置的方法還是通過修改龜文件?

我不想圓邊,就像這樣:

enter image description here

+1

您是否嘗試過turtle.pensize(INT),其中的參數是PX的大小? – adanot 2014-12-02 15:01:00

+2

是的,這只是一個更大的橢圓。 – HEATH3N 2014-12-02 15:01:51

回答

4

那麼,我已經想出了一個完美的解決方案,可以滿足我的需求。

通過使用screen.register_shape("bar",((width/2,0),(-width/2,0),(-width/2,height),(width/2,height)))註冊自定義形狀,筆變爲我們想要繪製的條的確切大小。

然後,我們可以簡單地遍歷每個小節,使用新值更新筆,然後使用turtle.stamp將它加印到圖上,然後再轉到下一個小節。

0

爲什麼不增加線路的寬度,還是我讓你錯了嗎?

turtle.width(...) 

請提供部分代碼或包含圖片,如果更改寬度不起作用。

+1

這仍然給我一個圓潤的描邊 – HEATH3N 2014-12-02 15:03:24

3

它看起來像改變筆劃本身的形狀是不可能的。 turtle.shape('square')只改變烏龜的形狀,而不是筆劃。我建議降低筆的大小,並創建一個繪製矩形的函數。你可以用這個來畫吧。

1

我對這個問題有兩種解決方案,我已經在各種程序中使用過。

第一個是你的郵票解決方案的變體。而不是使用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()