turtle —タートルグラフィックス
ソースコード: :source: `Lib / turtle.py`
序章
タートルグラフィックスは、子供たちにプログラミングを紹介するための一般的な方法です。 これは、1967年にウォーリー・フォージーグ、シーモア・パパート、シンシア・ソロモンによって開発されたオリジナルのロゴプログラミング言語の一部でした。
xy平面の(0、0)から始まるロボットのカメを想像してみてください。 import turtle
の後に、コマンドturtle.forward(15)
を与えると、(画面上で!)向いている方向に15ピクセル移動し、移動しながら線を引きます。 コマンドturtle.right(25)
を与えると、時計回りに25度回転します。
タートルスター
タートルは、単純な動きを繰り返すプログラムを使用して、複雑な形状を描くことができます。
class=align-center|../_images/turtle-star.png
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
これらのコマンドと同様のコマンドを組み合わせることで、複雑な形や絵を簡単に描くことができます。
turtle モジュールは、Python標準ディストリビューションからバージョンPython2.5までの同じ名前のモジュールの拡張された再実装です。
古いタートルモジュールのメリットを維持し、(ほぼ)100 % c互換性を持たせようとします。 これは、そもそも、-n
スイッチで実行されるIDLE内からモジュールを使用するときに、学習プログラマーがすべてのコマンド、クラス、およびメソッドをインタラクティブに使用できるようにすることを意味します。
turtleモジュールは、オブジェクト指向とプロシージャ指向の両方の方法で、タートルグラフィックスプリミティブを提供します。 基盤となるグラフィックに tkinter を使用するため、TkをサポートするバージョンのPythonがインストールされている必要があります。
オブジェクト指向インターフェースは、基本的に2 +2つのクラスを使用します。
TurtleScreen クラスは、グラフィックウィンドウを描画するカメの遊び場として定義します。 そのコンストラクターには、引数として
tkinter.Canvas
または ScrolledCanvas が必要です。 turtle を一部のアプリケーションの一部として使用する場合に使用する必要があります。関数 Screen()は、 TurtleScreen サブクラスのシングルトンオブジェクトを返します。 この関数は、 turtle をグラフィックスを実行するためのスタンドアロンツールとして使用する場合に使用する必要があります。 シングルトンオブジェクトとして、そのクラスから継承することはできません。
TurtleScreen / Screenのすべてのメソッドは、関数としても存在します。 手順指向のインターフェースの一部として。
RawTurtle (別名: RawPen )は、 TurtleScreen に描画するTurtleオブジェクトを定義します。 そのコンストラクターは引数としてCanvas、ScrolledCanvas、またはTurtleScreenを必要とするため、RawTurtleオブジェクトは描画する場所を認識します。
RawTurtleから派生したのはサブクラス Turtle (別名:
Pen
)で、まだ存在しない場合は自動的に作成される「the」 Screen インスタンスを利用します。RawTurtle / Turtleのすべてのメソッドは、関数としても存在します。 プロシージャ指向のインターフェイスの一部。
手続き型インターフェースは、クラス Screen および Turtle のメソッドから派生した関数を提供します。 それらは、対応するメソッドと同じ名前を持っています。 Screenメソッドから派生した関数が呼び出されるたびに、screenオブジェクトが自動的に作成されます。 Turtleメソッドから派生した関数のいずれかが呼び出されるたびに、(名前のない)turtleオブジェクトが自動的に作成されます。
画面上で複数のカメを使用するには、オブジェクト指向のインターフェースを使用する必要があります。
ノート
次のドキュメントでは、関数の引数リストを示しています。 もちろん、メソッドには追加の最初の引数 self がありますが、ここでは省略されています。
利用可能なタートルとスクリーンの方法の概要
カメの方法
- 亀の動き
- 移動して描画
-
backward() | bk() | back()
- カメの状態を教えてください
- 設定と測定
- ペンコントロール
- 描画状態
- カラーコントロール
- 充填
- より多くの描画制御
- カメの状態
- 可視性
- 外観
- イベントの使用
- 特別なカメの方法
TurtleScreen / Screenの方法
- ウィンドウコントロール
- アニメーションコントロール
- スクリーンイベントの使用
- 設定と特別な方法
- 入力方法
- Screenに固有のメソッド
RawTurtle / Turtleのメソッドと対応する機能
このセクションのほとんどの例は、turtle
と呼ばれるTurtleインスタンスを参照しています。
亀の動き
- turtle.forward(distance)
turtle.fd(distance) - パラメーター
距離 –数値(整数または浮動小数点)
指定された距離だけ、タートルが向かっている方向にタートルを前方に移動します。
>>> turtle.position() (0.00,0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00)
- turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance) - パラメーター
距離 –数値
カメが向かっている方向と反対に、距離だけカメを後方に動かします。 カメの方向を変えないでください。
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
- turtle.right(angle)
turtle.rt(angle) - パラメーター
angle –数値(整数または浮動小数点)
カメを角度単位で右に回します。 (単位はデフォルトで度ですが、 degrees()および radians()関数を介して設定できます。)角度の向きはタートルモードによって異なります。 mode()を参照してください。 。
>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
- turtle.left(angle)
turtle.lt(angle) - パラメーター
angle –数値(整数または浮動小数点)
カメを角度単位で左に回します。 (単位はデフォルトで度ですが、 degrees()および radians()関数を介して設定できます。)角度の向きはタートルモードによって異なります。 mode()を参照してください。 。
>>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0
- turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None) - パラメーター
x –数値または数値のペア/ベクトル
y –数値または
None
y が
None
の場合、 x は座標のペアまたは Vec2D である必要があります(例: pos()によって返されます)。カメを絶対位置に移動します。 ペンが下がっている場合は、線を引きます。 カメの向きを変えないでください。
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00)
- turtle.setx(x)
- パラメーター
x –数値(整数または浮動小数点)
タートルの最初の座標を x に設定し、2番目の座標は変更しないでください。
>>> turtle.position() (0.00,240.00) >>> turtle.setx(10) >>> turtle.position() (10.00,240.00)
- turtle.sety(y)
- パラメーター
y –数値(整数または浮動小数点)
タートルの2番目の座標を y に設定し、最初の座標は変更しないでください。
>>> turtle.position() (0.00,40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00,-10.00)
- turtle.setheading(to_angle)
turtle.seth(to_angle) - パラメーター
to_angle –数値(整数または浮動小数点)
カメの向きを to_angle に設定します。 度単位の一般的な方向は次のとおりです。
標準モード
ロゴモード
0-東
0-北
90-北
90-東
180-西
180-南
270-南
270-西
>>> turtle.setheading(90) >>> turtle.heading() 90.0
- turtle.home()
タートルを原点(座標(0,0))に移動し、方向を開始方向に設定します(モードによって異なります。 mode()を参照)。
>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
- turtle.circle(radius, extent=None, steps=None)
- パラメーター
半径 –数値
エクステント –数値(または
None
)ステップ –整数(または
None
)
与えられた半径で円を描きます。 中心はカメの左半径単位です。 extends –角度–円のどの部分を描画するかを決定します。 エクステントが指定されていない場合は、円全体を描画します。 extends が完全な円でない場合、円弧の1つの端点が現在のペンの位置になります。 半径が正の場合は反時計回りに、それ以外の場合は時計回りに円弧を描きます。 最後に、カメの方向がエクステントの量だけ変更されます。
円は内接する正多角形で近似されるため、 Steps によって使用するステップ数が決まります。 指定しない場合、自動的に計算されます。 正多角形の描画に使用できます。
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # draw a semicircle >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
- turtle.dot(size=None, *color)
- パラメーター
size –整数> = 1(指定されている場合)
color –カラーストリングまたは数値カラータプル
color を使用して、直径 size の円形ドットを描画します。 size が指定されていない場合、最大のpensize +4および2 * pensizeが使用されます。
>>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() (100.00,-0.00) >>> turtle.heading() 0.0
- turtle.stamp()
亀の形のコピーをキャンバスの現在の亀の位置にスタンプします。 そのスタンプのstamp_idを返します。これは、
clearstamp(stamp_id)
を呼び出すことでスタンプを削除するために使用できます。>>> turtle.color("blue") >>> turtle.stamp() 11 >>> turtle.fd(50)
- turtle.clearstamp(stampid)
- パラメーター
stampid –整数、前の Stamp()呼び出しの戻り値である必要があります
指定された stampid のスタンプを削除します。
>>> turtle.position() (150.00,-0.00) >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.position() (200.00,-0.00) >>> turtle.clearstamp(astamp) >>> turtle.position() (200.00,-0.00)
- turtle.clearstamps(n=None)
- パラメーター
n –整数(または
None
)
カメのスタンプのすべてまたは最初/最後の n を削除します。 もしも NS は
None
、もしあれば、すべてのスタンプを削除します NS > 0最初に削除 NS 切手、それ以外の場合 NS <0最後に削除 NS スタンプ。>>> for i in range(8): ... turtle.stamp(); turtle.fd(30) 13 14 15 16 17 18 19 20 >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
- turtle.undo()
最後のタートルアクションを(繰り返し)元に戻します。 使用可能な取り消しアクションの数は、取り消しバッファーのサイズによって決まります。
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
- turtle.speed(speed=None)
- パラメーター
speed – 0..10の範囲の整数またはスピードストリング(以下を参照)
カメの速度を0..10の範囲の整数値に設定します。 引数が指定されていない場合は、現在の速度を返します。
入力が10より大きいか0.5より小さい数値の場合、速度は0に設定されます。 スピードストリングは、次のようにスピード値にマップされます。
「最速」:0
「速い」:10
「通常」:6
「遅い」:3
「最も遅い」:1
1から10までの速度は、線画とタートルターンのアニメーションをますます高速にします。
重要: speed = 0は、 no アニメーションが実行されることを意味します。 前方/後方はカメをジャンプさせ、同様に左/右はカメを瞬時に回転させます。
>>> turtle.speed() 3 >>> turtle.speed('normal') >>> turtle.speed() 6 >>> turtle.speed(9) >>> turtle.speed() 9
カメの状態を教えてください
- turtle.position()
turtle.pos() カメの現在の位置(x、y)を( Vec2D ベクトルとして)返します。
>>> turtle.pos() (440.00,-0.00)
- turtle.towards(x, y=None)
- パラメーター
x –数値または数値のペア/ベクトルまたはタートルインスタンス
y – x が数値の場合は数値、それ以外の場合は
None
カメの位置から(x、y)、ベクトル、または他のカメで指定された位置までの線の間の角度を返します。 これは、モード(「標準」/「ワールド」または「ロゴ」)に依存するタートルの開始方向によって異なります。
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
- turtle.xcor()
カメのx座標を返します。
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
- turtle.ycor()
カメのy座標を返します。
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
- turtle.heading()
タートルの現在の方位を返します(値はタートルモードによって異なります。 mode()を参照してください)。
>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
- turtle.distance(x, y=None)
- パラメーター
x –数値または数値のペア/ベクトルまたはタートルインスタンス
y – x が数値の場合は数値、それ以外の場合は
None
タートルから(x、y)、指定されたベクトル、または指定された他のタートルまでの距離をタートルステップ単位で返します。
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
測定の設定
- turtle.degrees(fullcircle=360.0)
- パラメーター
fullcircle –数値
角度測定単位を設定します。 完全な円の「度」の数を設定します。 デフォルト値は360度です。
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 Change angle measurement unit to grad (also known as gon, grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
- turtle.radians()
角度測定単位をラジアンに設定します。
degrees(2*math.pi)
と同等です。>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
ペンコントロール
描画状態
- turtle.pendown()
turtle.pd()
turtle.down()
- ペンを引き下げます–移動するときに描画します。
- turtle.penup()
turtle.pu()
turtle.up()
- ペンを引き上げます–移動時に描画しません。
- turtle.pensize(width=None)
turtle.width(width=None) - パラメーター
width –正の数
線の太さを幅に設定するか、戻します。 サイズ変更モードが「自動」に設定されていて、タートルシェイプがポリゴンの場合、そのポリゴンは同じ線の太さで描画されます。 引数が指定されていない場合は、現在のペンサイズが返されます。
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
- turtle.pen(pen=None, **pendict)
- パラメーター
pen –以下にリストされているキーの一部またはすべてを含む辞書
pendict –以下にリストされているキーをキーワードとして持つ1つ以上のキーワード引数
次のキーと値のペアを使用して、ペンの属性を「ペン辞書」に返すか設定します。
「表示」:True / False
「ペンダウン」:True / False
「ペンカラー」:カラーストリングまたはカラータプル
「fillcolor」:カラー文字列またはカラータプル
「ペンサイズ」:正の数
「速度」:範囲0..10の数値
「resizemode」:「auto」または「user」または「noresize」
「ストレッチファクター」:(正の数、正の数)
「概要」:正の数
「傾き」:数
このディクショナリは、 pen()を呼び出して以前のペンの状態を復元するための引数として使用できます。 さらに、これらの属性の1つ以上をキーワード引数として提供できます。 これを使用して、1つのステートメントで複数のペン属性を設定できます。
>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> sorted(turtle.pen().items()) [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shearfactor', 0.0), ('shown', True), ('speed', 9), ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)] >>> penstate=turtle.pen() >>> turtle.color("yellow", "") >>> turtle.penup() >>> sorted(turtle.pen().items())[:3] [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')] >>> turtle.pen(penstate, fillcolor="green") >>> sorted(turtle.pen().items())[:3] [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
- turtle.isdown()
ペンが下がっている場合は
True
を返し、上にある場合はFalse
を返します。>>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True
カラーコントロール
- turtle.pencolor(*args)
ペンカラーを返すか、設定します。
4つの入力形式が許可されています。
pencolor()
現在のペンカラーを色指定文字列またはタプルとして返します(例を参照)。 別のcolor / pencolor / fillcolor呼び出しへの入力として使用できます。
pencolor(colorstring)
ペンカラーを colorstring に設定します。これは、
"red"
、"yellow"
、"#33cc8c"
などのTkカラー指定文字列です。pencolor((r, g, b))
ペンカラーを、 r 、 g 、および b のタプルで表されるRGBカラーに設定します。 r 、 g 、および b は、それぞれ0..colormodeの範囲内にある必要があります。ここで、colormodeは1.0または255のいずれかです( colormode( ))。
pencolor(r, g, b)
ペンカラーを r 、 g 、 b で表されるRGBカラーに設定します。 r 、 g 、および b はそれぞれ、0..colormodeの範囲内にある必要があります。
タートルシェイプがポリゴンの場合、そのポリゴンの輪郭は新しく設定されたペンカラーで描画されます。
>>> colormode() 1.0 >>> turtle.pencolor() 'red' >>> turtle.pencolor("brown") >>> turtle.pencolor() 'brown' >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() (0.2, 0.8, 0.5490196078431373) >>> colormode(255) >>> turtle.pencolor() (51.0, 204.0, 140.0) >>> turtle.pencolor('#32c18f') >>> turtle.pencolor() (50.0, 193.0, 143.0)
- turtle.fillcolor(*args)
塗りつぶしを返すか、設定します。
4つの入力形式が許可されています。
fillcolor()
現在の塗りつぶし色を色指定文字列として、場合によってはタプル形式で返します(例を参照)。 別のcolor / pencolor / fillcolor呼び出しへの入力として使用できます。
fillcolor(colorstring)
fillcolorを colorstring に設定します。これは、
"red"
、"yellow"
、"#33cc8c"
などのTk色指定文字列です。fillcolor((r, g, b))
fillcolorを、 r 、 g 、および b のタプルで表されるRGBカラーに設定します。 r 、 g 、および b は、それぞれ0..colormodeの範囲内にある必要があります。ここで、colormodeは1.0または255のいずれかです( colormode( ))。
fillcolor(r, g, b)
fillcolorを r 、 g 、および b で表されるRGBカラーに設定します。 r 、 g 、および b はそれぞれ、0..colormodeの範囲内にある必要があります。
turtleshapeがポリゴンの場合、そのポリゴンの内部は新しく設定された塗りつぶし色で描画されます。
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Integers, not floats >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0)
- turtle.color(*args)
ペンカラーとフィルカラーを返すか設定します。
いくつかの入力フォーマットが許可されています。 次のように0から3の引数を使用します。
color()
現在のペンカラーと現在のフィルカラーを、 pencolor()と fillcolor()によって返される色指定文字列またはタプルのペアとして返します。
color(colorstring)
、color((r,g,b))
、color(r,g,b)
pencolor()のように入力し、fillcolorとpencolorの両方を指定された値に設定します。
color(colorstring1, colorstring2)
、color((r1,g1,b1), (r2,g2,b2))
pencolor(colorstring1)
およびfillcolor(colorstring2)
と同等であり、他の入力形式が使用されている場合も同様です。タートルシェイプがポリゴンの場合、そのポリゴンの輪郭と内部は新しく設定された色で描画されます。
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))
参照:画面メソッド colormode()。
充填
- turtle.filling()
fillstateを返します(fillingの場合は
True
、それ以外の場合はFalse
)。>>> turtle.begin_fill() >>> if turtle.filling(): ... turtle.pensize(5) ... else: ... turtle.pensize(3)
- turtle.begin_fill()
- 塗りつぶす図形を描く直前に呼び出されます。
- turtle.end_fill()
begin_fill()を最後に呼び出した後に描画された図形を塗りつぶします。
自己交差するポリゴンまたは複数の形状の重なり領域が塗りつぶされるかどうかは、オペレーティングシステムのグラフィック、重なりのタイプ、および重なりの数によって異なります。 たとえば、上のタートルスターは、すべて黄色であるか、いくつかの白い領域がある可能性があります。
>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
より多くの描画制御
- turtle.reset()
画面からタートルの描画を削除し、タートルの中心を再設定して、変数をデフォルト値に設定します。
>>> turtle.goto(0,-22) >>> turtle.left(100) >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
- turtle.clear()
- 画面からカメの絵を削除します。 カメを動かさないでください。 カメの状態と位置、および他のカメの図面は影響を受けません。
- turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))
- パラメーター
arg –TurtleScreenに書き込まれるオブジェクト
move – True / False
align –「左」、「中央」、または「右」の文字列の1つ
font –トリプル(fontname、fontsize、fonttype)
align (「左」、「中央」、または右」)に従って、指定されたフォントを使用して、現在のタートル位置にテキスト( arg の文字列表現)を書き込みます。 move がtrueの場合、ペンはテキストの右下隅に移動します。 デフォルトでは、 move は
False
です。>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
カメの状態
可視性
- turtle.hideturtle()
turtle.ht() カメを見えなくします。 複雑な描画を行っている最中にこれを行うことをお勧めします。タートルを非表示にすると、描画が目に見えて速くなるためです。
>>> turtle.hideturtle()
- turtle.showturtle()
turtle.st() カメが見えるようにします。
>>> turtle.showturtle()
- turtle.isvisible()
タートルが表示されている場合は
True
を返し、非表示の場合はFalse
を返します。>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
外観
- turtle.shape(name=None)
- パラメーター
name –有効なシェイプ名である文字列
タートルの形状を、指定された name の形状に設定するか、名前が指定されていない場合は、現在の形状の名前を返します。 name のShapeは、TurtleScreenの形状ディクショナリに存在する必要があります。 最初は、「矢印」、「カメ」、「円」、「正方形」、「三角形」、「クラシック」のポリゴン形状があります。 シェイプの処理方法については、Screenメソッド register_shape()を参照してください。
>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
- turtle.resizemode(rmode=None)
- パラメーター
rmode –文字列「auto」、「user」、「noresize」のいずれか
サイズ変更モードを「auto」、「user」、「noresize」のいずれかの値に設定します。 rmode が指定されていない場合は、現在のサイズ変更モードを返します。 さまざまなサイズ変更モードには、次の効果があります。
「自動」:ペンサイズの値に対応するカメの外観を調整します。
「user」: shapesize()で設定されたstretchfactorとoutlinewidth(outline)の値に従って、タートルの外観を調整します。
「noresize」:カメの外見の適応は行われません。
resizemode(“ user”)は、引数とともに使用されると shapesize()によって呼び出されます。
>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
- turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None) - パラメーター
Stretch_wid –正の数
Stretch_len –正の数
アウトライン –正の数
ペンの属性x / y-stretchfactorsおよび/またはoutlineを返すか設定します。 サイズ変更モードを「ユーザー」に設定します。 サイズ変更モードが「ユーザー」に設定されている場合にのみ、タートルはそのストレッチファクターに従ってストレッチされて表示されます。 Stretch_wid はその方向に垂直なストレッチファクターであり、 Stretch_len はその方向のストレッチファクターです。方向、アウトラインは、シェイプのアウトラインの幅を決定します。
>>> turtle.shapesize() (1.0, 1.0, 1) >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize() (5, 5, 12) >>> turtle.shapesize(outline=8) >>> turtle.shapesize() (5, 5, 8)
- turtle.shearfactor(shear=None)
- パラメーター
せん断 –番号(オプション)
現在のせん断係数を設定または返します。 与えられたせん断係数せん断(せん断角度の接線)に従ってタートルシェイプをせん断します。 カメの方位(移動方向)を変更しないでください。 せん断が与えられていない場合:現在のせん断係数を返します。 e。 カメの方向に平行な線がせん断されるせん断角度の接線。
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
- turtle.tilt(angle)
- パラメーター
角度 –数値
タートルシェイプを現在の傾斜角度から角度だけ回転させますが、タートルの方位(移動方向)を変更しないでください。
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50)
- turtle.settiltangle(angle)
- パラメーター
角度 –数値
現在の傾斜角度に関係なく、角度で指定された方向を指すようにタートルシェイプを回転させます。 カメの方位(移動方向)を変更しないでください。
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> turtle.fd(50)
バージョン3.1以降非推奨。
- turtle.tiltangle(angle=None)
- パラメーター
角度 –数値(オプション)
現在の傾斜角度を設定または戻します。 角度が指定されている場合は、現在の傾斜角度に関係なく、タートルシェイプを回転して角度で指定された方向を指します。 カメの方位(移動方向)を変更しないでください。 角度が指定されていない場合:現在の傾斜角度を返します。 e。 カメの形の向きとカメの向き(動きの方向)の間の角度。
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
- turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)
- パラメーター
t11 –数値(オプション)
t12 –数値(オプション)
t21 –数値(オプション)
t12 –数値(オプション)
亀の形の現在の変換行列を設定または返します。
行列要素が指定されていない場合は、変換行列を4要素のタプルとして返します。 それ以外の場合は、指定された要素を設定し、最初の行t11、t12と2番目の行t21、22で構成される行列に従ってタートルシェイプを変換します。 行列式t11 * t22 --t12 * t21はゼロであってはなりません。ゼロでない場合、エラーが発生します。 指定されたマトリックスに従って、stretchfactor、shearfactor、tiltangleを変更します。
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
- turtle.get_shapepoly()
現在の形状ポリゴンを座標ペアのタプルとして返します。 これを使用して、複合形状の新しい形状またはコンポーネントを定義できます。
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
イベントの使用
- turtle.onclick(fun, btn=1, add=None)
- パラメーター
fun –キャンバス上のクリックされたポイントの座標で呼び出される2つの引数を持つ関数
btn –マウスボタンの数。デフォルトは1(マウスの左ボタン)です。
add –
True
またはFalse
–True
の場合、新しいバインディングが追加されます。それ以外の場合は、以前のバインディングが置き換えられます。
fun をこのタートルのマウスクリックイベントにバインドします。 fun が
None
の場合、既存のバインディングは削除されます。 匿名のカメの例、すなわち 手続き上の方法:>>> def turn(x, y): ... left(180) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed
- turtle.onrelease(fun, btn=1, add=None)
- パラメーター
fun –キャンバス上のクリックされたポイントの座標で呼び出される2つの引数を持つ関数
btn –マウスボタンの数。デフォルトは1(マウスの左ボタン)です。
add –
True
またはFalse
–True
の場合、新しいバインディングが追加されます。それ以外の場合は、以前のバインディングが置き換えられます。
fun をこのカメのマウスボタンリリースイベントにバインドします。 fun が
None
の場合、既存のバインディングは削除されます。>>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> turtle = MyTurtle() >>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor red, >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
- turtle.ondrag(fun, btn=1, add=None)
- パラメーター
fun –キャンバス上のクリックされたポイントの座標で呼び出される2つの引数を持つ関数
btn –マウスボタンの数。デフォルトは1(マウスの左ボタン)です。
add –
True
またはFalse
–True
の場合、新しいバインディングが追加されます。それ以外の場合は、以前のバインディングが置き換えられます。
fun をこのカメのマウス移動イベントにバインドします。 fun が
None
の場合、既存のバインディングは削除されます。備考:タートルでのマウス移動イベントのすべてのシーケンスの前に、そのタートルでのマウスクリックイベントがあります。
>>> turtle.ondrag(turtle.goto)
続いて、タートルをクリックしてドラッグすると、タートルが画面上を移動し、手描きが作成されます(ペンが下がっている場合)。
特別なカメの方法
- turtle.begin_poly()
- ポリゴンの頂点の記録を開始します。 現在のタートルの位置は、ポリゴンの最初の頂点です。
- turtle.end_poly()
- ポリゴンの頂点の記録を停止します。 現在のタートルの位置は、ポリゴンの最後の頂点です。 これは最初の頂点に接続されます。
- turtle.get_poly()
最後に記録されたポリゴンを返します。
>>> turtle.home() >>> turtle.begin_poly() >>> turtle.fd(100) >>> turtle.left(20) >>> turtle.fd(30) >>> turtle.left(60) >>> turtle.fd(50) >>> turtle.end_poly() >>> p = turtle.get_poly() >>> register_shape("myFavouriteShape", p)
- turtle.clone()
同じ位置、見出し、カメのプロパティを持つカメのクローンを作成して返します。
>>> mick = Turtle() >>> joe = mick.clone()
- turtle.getturtle()
turtle.getpen() Turtleオブジェクト自体を返します。 唯一の合理的な使用法:「匿名のカメ」を返す関数として:
>>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x...>
- turtle.getscreen()
タートルが描画している TurtleScreen オブジェクトを返します。 次に、そのオブジェクトに対してTurtleScreenメソッドを呼び出すことができます。
>>> ts = turtle.getscreen() >>> ts <turtle._Screen object at 0x...> >>> ts.bgcolor("pink")
- turtle.setundobuffer(size)
- パラメーター
size –整数または
None
元に戻すバッファを設定または無効にします。 size が整数の場合、指定されたサイズの空のアンドゥバッファがインストールされます。 size は、 undo()メソッド/関数で元に戻すことができるタートルアクションの最大数を示します。 size が
None
の場合、元に戻すバッファーは無効になります。>>> turtle.setundobuffer(42)
- turtle.undobufferentries()
元に戻すバッファのエントリ数を返します。
>>> while undobufferentries(): ... undo()
複合形状
異なる色の複数のポリゴンで構成される複合タートルシェイプを使用するには、以下に説明するように、ヘルパークラス Shape を明示的に使用する必要があります。
タイプ「compound」の空のShapeオブジェクトを作成します。
addcomponent()
メソッドを使用して、このオブジェクトに必要な数のコンポーネントを追加します。例えば:
>>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s.addcomponent(poly1, "red", "blue") >>> poly2 = ((0,0),(10,-5),(-10,-5)) >>> s.addcomponent(poly2, "blue", "red")
次に、シェイプを画面のシェイプリストに追加して使用します。
>>> register_shape("myshape", s) >>> shape("myshape")
ノート
Shape クラスは、 register_shape()メソッドによってさまざまな方法で内部的に使用されます。 上記のような複合形状を使用する場合、アプリケーションプログラマはShapeクラスのみを処理する必要があります。
TurtleScreen / Screenのメソッドと対応する機能
このセクションのほとんどの例は、screen
と呼ばれるTurtleScreenインスタンスを参照しています。
ウィンドウコントロール
- turtle.bgcolor(*args)
- パラメーター
args –0..colormodeの範囲のカラー文字列または3つの数値またはそのような数値の3タプル
TurtleScreenの背景色を設定または返します。
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
- turtle.bgpic(picname=None)
- パラメーター
picname –文字列、gifファイルの名前、
"nopic"
、またはNone
背景画像を設定するか、現在の背景画像の名前を返します。 picname がファイル名の場合、対応する画像を背景として設定します。 picname が
"nopic"
の場合、背景画像が存在する場合は削除します。 picname がNone
の場合、現在の背景画像のファイル名を返します。>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
- turtle.clear()
turtle.clearscreen() TurtleScreenからすべての図面とすべてのカメを削除します。 空になったTurtleScreenを初期状態にリセットします:白い背景、背景画像なし、イベントバインディングなし、トレースオン。
ノート
このTurtleScreenメソッドは、
clearscreen
という名前でのみグローバル関数として使用できます。 グローバル関数clear
は、タートルメソッドclear
から派生した別の関数です。
- turtle.reset()
turtle.resetscreen() 画面上のすべてのカメを初期状態にリセットします。
ノート
このTurtleScreenメソッドは、
resetscreen
という名前でのみグローバル関数として使用できます。 グローバル関数reset
は、Turtleメソッドreset
から派生したもう1つの関数です。
- turtle.screensize(canvwidth=None, canvheight=None, bg=None)
- パラメーター
canvwidth –正の整数、新しいキャンバスの幅(ピクセル単位)
canvheight –正の整数、新しいキャンバスの高さ(ピクセル単位)
bg –カラーストリングまたはカラータプル、新しい背景色
引数が指定されていない場合は、current(canvaswidth、canvasheight)を返します。 それ以外の場合は、カメが描いているキャンバスのサイズを変更します。 描画ウィンドウを変更しないでください。 キャンバスの非表示部分を観察するには、スクロールバーを使用します。 この方法を使用すると、以前はキャンバスの外側にあった図面の部分を表示できます。
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
例えば 誤って逃げ出したカメを探す;-)
- turtle.setworldcoordinates(llx, lly, urx, ury)
- パラメーター
llx –数値、キャンバスの左下隅のx座標
lly –キャンバスの左下隅の数値、y座標
urx –キャンバスの右上隅の数値、x座標
ury –キャンバスの右上隅の数値、y座標
ユーザー定義の座標系を設定し、必要に応じてモード「ワールド」に切り替えます。 これにより、
screen.reset()
が実行されます。 モード「ワールド」がすでにアクティブになっている場合、すべての図面は新しい座標に従って再描画されます。注意:ユーザー定義の座標系では、角度が歪んで見える場合があります。
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
アニメーションコントロール
- turtle.delay(delay=None)
- パラメーター
delay –正の整数
図面遅延をミリ秒単位で設定または返します。 (これは、2つの連続するキャンバスの更新間のおおよその時間間隔です。)描画の遅延が長いほど、アニメーションは遅くなります。
オプションの引数:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
- turtle.tracer(n=None, delay=None)
- パラメーター
n –非負の整数
delay –非負の整数
タートルアニメーションのオン/オフを切り替え、図面を更新するための遅延を設定します。 n が指定されている場合、実際にはn番目ごとの通常の画面更新のみが実行されます。 (複雑なグラフィックの描画を高速化するために使用できます。)引数なしで呼び出されると、現在格納されているnの値を返します。 2番目の引数は遅延値を設定します( delay()を参照)。
>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
- turtle.update()
- TurtleScreenの更新を実行します。 トレーサーがオフのときに使用します。
RawTurtle / Turtleメソッド speed()も参照してください。
スクリーンイベントの使用
- turtle.listen(xdummy=None, ydummy=None)
- TurtleScreenにフォーカスを設定します(キーイベントを収集するため)。 listen()をonclickメソッドに渡すことができるように、ダミーの引数が用意されています。
- turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key) - パラメーター
fun –引数のない関数または
None
key –文字列:キー(例: 「a」)またはキー記号(例: "スペース")
fun をキーのキーリリースイベントにバインドします。 fun が
None
の場合、イベントバインディングは削除されます。 備考:キーイベントを登録できるようにするには、TurtleScreenにフォーカスが必要です。 (メソッド listen()を参照してください。)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- turtle.onkeypress(fun, key=None)
- パラメーター
fun –引数のない関数または
None
key –文字列:キー(例: 「a」)またはキー記号(例: "スペース")
fun を、キーが指定されている場合はキーのキー押下イベントにバインドし、キーが指定されていない場合は任意のキー押下イベントにバインドします。 備考:キーイベントを登録できるようにするには、TurtleScreenにフォーカスが必要です。 (メソッド listen()を参照してください。)
>>> def f(): ... fd(50) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- turtle.onclick(fun, btn=1, add=None)
turtle.onscreenclick(fun, btn=1, add=None) - パラメーター
fun –キャンバス上のクリックされたポイントの座標で呼び出される2つの引数を持つ関数
btn –マウスボタンの数。デフォルトは1(マウスの左ボタン)です。
add –
True
またはFalse
–True
の場合、新しいバインディングが追加されます。それ以外の場合は、以前のバインディングが置き換えられます。
fun をこの画面のマウスクリックイベントにバインドします。 fun が
None
の場合、既存のバインディングは削除されます。screen
という名前のTurtleScreenインスタンスとturtleという名前のTurtleインスタンスの例:>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
ノート
このTurtleScreenメソッドは、
onscreenclick
という名前でのみグローバル関数として使用できます。 グローバル関数onclick
は、Turtleメソッドonclick
から派生したもう1つの関数です。
- turtle.ontimer(fun, t=0)
- パラメーター
fun –引数のない関数
t –数値> = 0
t ミリ秒後に fun を呼び出すタイマーをインストールします。
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
- turtle.mainloop()
turtle.done() イベントループを開始します-Tkinterのmainloop関数を呼び出します。 タートルグラフィックスプログラムの最後のステートメントである必要があります。 タートルグラフィックスをインタラクティブに使用するために、スクリプトをIDLE内から-nモード(サブプロセスなし)で実行する場合は、を使用しないでください。
>>> screen.mainloop()
入力方法
- turtle.textinput(title, prompt)
- パラメーター
タイトル –文字列
プロンプト –文字列
文字列を入力するためのダイアログウィンドウをポップアップします。 パラメータtitleはダイアログウィンドウのタイトルであり、promptは主に入力する情報を説明するテキストです。 文字列入力を返します。 ダイアログがキャンセルされた場合は、
None
を返します。>>> screen.textinput("NIM", "Name of first player:")
- turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
- パラメーター
タイトル –文字列
プロンプト –文字列
デフォルト –数値(オプション)
minval –数値(オプション)
maxval –数値(オプション)
数値を入力するためのダイアログウィンドウをポップアップします。 titleはダイアログウィンドウのタイトルであり、promptは主に入力する数値情報を説明するテキストです。 default:デフォルト値、minval:入力の最小値、maxval:入力の最大値inputの数値はminvalの範囲内である必要があります。 これらが指定されている場合はmaxval。 そうでない場合は、ヒントが発行され、ダイアログは修正のために開いたままになります。 入力した数値を返します。 ダイアログがキャンセルされた場合は、
None
を返します。>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
設定と特別な方法
- turtle.mode(mode=None)
- パラメーター
mode –文字列「standard」、「logo」、または「world」のいずれか
タートルモード(「標準」、「ロゴ」、「ワールド」)を設定し、リセットを実行します。 モードが指定されていない場合、現在のモードが返されます。
モード「標準」は、古いタートルと互換性があります。 モード「ロゴ」は、ほとんどのロゴタートルグラフィックスと互換性があります。 モード「ワールド」は、ユーザー定義の「ワールド座標」を使用します。 注意:このモードでは、
x/y
の単位比が1に等しくない場合、角度が歪んで表示されます。モード
最初のカメの見出し
正の角度
"標準"
右(東)
反時計回り
"ロゴ"
上向き(北)
時計回り
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
- turtle.colormode(cmode=None)
- パラメーター
cmode –値1.0または255のいずれか
カラーモードを返すか、1.0または255に設定します。 続いて、カラートリプルの r 、 g 、 b の値は0 .. cmode の範囲内にある必要があります。
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
- turtle.getcanvas()
このTurtleScreenのキャンバスを返します。 TkinterCanvasをどうするかを知っているインサイダーに役立ちます。
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas object ...>
- turtle.getshapes()
現在利用可能なすべてのカメの形の名前のリストを返します。
>>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle']
- turtle.register_shape(name, shape=None)
turtle.addshape(name, shape=None) この関数を呼び出すには、次の3つの方法があります。
name はgifファイルの名前で、 shape は
None
です。対応する画像の形状をインストールします。>>> screen.register_shape("turtle.gif")
ノート
タートルを回すときに画像の形状が回転しないため、タートルの方向が表示されません。
name は任意の文字列で、 shape は座標のペアのタプルです。対応するポリゴン形状をインストールします。
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
name は任意の文字列で、shapeは(複合) Shape オブジェクトです:対応する複合形状をインストールします。
TurtleScreenのシェイプリストにタートルシェイプを追加します。 コマンド
shape(shapename)
を発行すると、このように登録された形状のみを使用できます。
- turtle.turtles()
画面上のカメのリストを返します。
>>> for turtle in screen.turtles(): ... turtle.color("red")
- turtle.window_height()
タートルウィンドウの高さを返します。
>>> screen.window_height() 480
- turtle.window_width()
タートルウィンドウの幅を返します。
>>> screen.window_width() 640
TurtleScreenから継承されていない、Screenに固有のメソッド
- turtle.bye()
- タートルグラフィックスウィンドウを閉じます。
- turtle.exitonclick()
bye()メソッドを画面上のマウスクリックにバインドします。
構成ディクショナリの値「using_IDLE」が
False
(デフォルト値)の場合は、mainloopも入力します。 備考:-n
スイッチ付き(サブプロセスなし)のIDLEを使用する場合は、turtle.cfg
のTrue
に設定してください。 この場合、IDLE自体のメインループはクライアントスクリプトに対してもアクティブです。
- turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])
メインウィンドウのサイズと位置を設定します。 引数のデフォルト値は構成ディクショナリに格納されており、
turtle.cfg
ファイルを介して変更できます。- パラメーター
width –整数の場合、ピクセル単位のサイズ、浮動小数点の場合、画面の一部。 デフォルトは50 % o f画面です
height –整数の場合はピクセル単位の高さ、浮動小数点の場合は画面の一部。 デフォルトは75 % o f画面です
startx –正の場合、画面の左端からピクセル単位の開始位置、右端から負の場合、
None
の場合、ウィンドウを水平方向に中央揃えstarty –正の場合、画面の上端からピクセル単位の開始位置、下端から負の場合、
None
の場合、ウィンドウを垂直方向に中央揃え
>>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # sets window to 75% of screen by 50% of screen and centers
- turtle.title(titlestring)
- パラメーター
titlestring –タートルグラフィックスウィンドウのタイトルバーに表示される文字列
タートルウィンドウのタイトルを titlestring に設定します。
>>> screen.title("Welcome to the turtle zoo!")
公開クラス
- class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas) - パラメーター
canvas –
tkinter.Canvas
、 ScrolledCanvas 、または TurtleScreen
カメを作成します。 カメには、上記のすべての方法が「カメ/カメの方法」としてあります。
- class turtle.Turtle
- RawTurtleのサブクラスは同じインターフェースを持っていますが、初めて必要になったときに自動的に作成されたデフォルトの Screen オブジェクトを利用します。
- class turtle.TurtleScreen(cv)
- パラメーター
cv –
tkinter.Canvas
setbg()
などの画面指向のメソッドを提供します。 上記のとおりです。
- class turtle.Screen
- TurtleScreenのサブクラス。 4つのメソッドが追加されています。
- class turtle.ScrolledCanvas(master)
- パラメーター
master –ScrolledCanvasを含むTkinterウィジェット。 スクロールバーが追加されたTkinterキャンバス
Screenクラスで使用されます。これにより、カメの遊び場としてScrolledCanvasが自動的に提供されます。
- class turtle.Shape(type_, data)
- パラメーター
type_ –文字列「polygon」、「image」、「compound」のいずれか
データ構造モデリング形状。 ペア
(type_, data)
は、次の仕様に従う必要があります。タイプ_
データ
"ポリゴン"
ポリゴンタプル、つまり 座標のペアのタプル
"画像"
画像(この形式では内部でのみ使用されます!)
「化合物」
None
( addcomponent()メソッドを使用して複合形状を作成する必要があります)- addcomponent(poly, fill, outline=None)
- パラメーター
poly –ポリゴン、つまり 数字のペアのタプル
fill – poly が塗りつぶされる色
アウトライン –ポリゴンのアウトラインの色(指定されている場合)
例:
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... add more components and then use register_shape()
複合形状を参照してください。
- class turtle.Vec2D(x, y)
タートルグラフィックスを実装するためのヘルパークラスとして使用される2次元のベクトルクラス。 タートルグラフィックスプログラムにも役立つかもしれません。 タプルから派生したので、ベクトルはタプルです!
提供( a 、 b ベクトル、 k 番号の場合):
a + b
ベクトル加算a - b
ベクトル減算a * b
内積k * a
およびa * k
スカラーとの乗算abs(a)
の絶対値a.rotate(angle)
回転
ヘルプと構成
ヘルプの使い方
ScreenクラスとTurtleクラスのパブリックメソッドは、docstringを介して広範囲に文書化されています。 したがって、これらはPythonヘルプ機能を介してオンラインヘルプとして使用できます。
IDLEを使用する場合、ツールチップには、関数/メソッド呼び出しで入力されたdocstringの署名と最初の行が表示されます。
メソッドまたは関数で help()を呼び出すと、docstringが表示されます。
>>> help(Screen.bgcolor) Help on method bgcolor in module turtle: bgcolor(self, *args) unbound turtle.Screen method Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. >>> screen.bgcolor("orange") >>> screen.bgcolor() "orange" >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() "#800080" >>> help(Turtle.penup) Help on method penup in module turtle: penup(self) unbound turtle.Turtle method Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument >>> turtle.penup()
メソッドから派生した関数のdocstringは、次の形式に変更されています。
>>> help(bgcolor) Help on function bgcolor in module turtle: bgcolor(*args) Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example:: >>> bgcolor("orange") >>> bgcolor() "orange" >>> bgcolor(0.5,0,0.5) >>> bgcolor() "#800080" >>> help(penup) Help on function penup in module turtle: penup() Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example: >>> penup()
これらの変更されたdocstringは、インポート時にメソッドから派生した関数定義とともに自動的に作成されます。
docstringの異なる言語への翻訳
キーがメソッド名であり、その値がクラスScreenおよびTurtleのパブリックメソッドのdocstringであるディクショナリを作成するユーティリティがあります。
- turtle.write_docstringdict(filename='turtle_docstringdict')
- パラメーター
filename –ファイル名として使用される文字列
docstring-dictionaryを作成し、指定されたファイル名でPythonスクリプトに書き込みます。 この関数は明示的に呼び出す必要があります(タートルグラフィックスクラスでは使用されません)。 docstringディクショナリはPythonスクリプト
filename.py
に書き込まれます。 これは、docstringをさまざまな言語に翻訳するためのテンプレートとして機能することを目的としています。
あなた(またはあなたの学生)が母国語のオンラインヘルプで turtle を使用したい場合は、docstringを翻訳し、結果のファイルを次のように保存する必要があります。 turtle_docstringdict_german.py
。
turtle.cfg
ファイルに適切なエントリがある場合、この辞書はインポート時に読み込まれ、元の英語のdocstringに置き換わります。
この記事の執筆時点では、ドイツ語とイタリア語のdocstring辞書があります。 (リクエストは [email protected] までお願いします。)
スクリーンとタートルを設定する方法
組み込みのデフォルト構成は、古いturtleモジュールとの可能な限り最高の互換性を維持するために、その外観と動作を模倣しています。
このモジュールの機能をより適切に反映する、またはニーズにより適した別の構成を使用する場合、たとえば 教室で使用するために、インポート時に読み取られる構成ファイルturtle.cfg
を準備し、その設定に従って構成を変更できます。
組み込み構成は、次のturtle.cfgに対応します。
width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False
選択したエントリの簡単な説明:
- 最初の4行は、
Screen.setup()
メソッドの引数に対応しています。 - 5行目と6行目は、メソッド
Screen.screensize()
の引数に対応しています。 - shape は、矢印、タートルなどの組み込み形状のいずれかです。 詳細については、
help(shape)
をお試しください。 - 塗りつぶしを使用しない場合(つまり、 タートルを透明にする)、
fillcolor = ""
を記述する必要があります(ただし、空でない文字列はすべてcfgファイルに引用符を含めることはできません)。 - カメの状態を反映したい場合は、
resizemode = auto
を使用する必要があります。 - あなたが設定した場合例えば
language = italian
docstringdictturtle_docstringdict_italian.py
は、インポート時にロードされます(インポートパスに存在する場合、例: turtle と同じディレクトリにあります。 - エントリ exampleturtle および examplescreen は、docstringに出現するこれらのオブジェクトの名前を定義します。 method-docstringsをfunction-docstringsに変換すると、これらの名前がdocstringsから削除されます。
- using_IDLE :IDLEとその-nスイッチ(「サブプロセスなし」)を定期的に使用する場合は、これを
True
に設定します。 これにより、 exitonclick()がメインループに入るのを防ぎます。
turtle が保存されているディレクトリにturtle.cfg
ファイルがあり、現在の作業ディレクトリに追加のファイルがある場合があります。 後者は最初のものの設定を上書きします。
Lib/turtledemo
ディレクトリには、turtle.cfg
ファイルが含まれています。 例としてそれを研究し、デモを実行するときにその効果を確認できます(できればデモビューアー内からではありません)。
turtledemo —デモスクリプト
turtledemo パッケージには、一連のデモスクリプトが含まれています。 これらのスクリプトは、付属のデモビューアを使用して次のように実行および表示できます。
python -m turtledemo
または、デモスクリプトを個別に実行することもできます。 例えば、
python -m turtledemo.bytedesign
turtledemo パッケージディレクトリには次のものが含まれています。
- スクリプトのソースコードを表示し、同時に実行するために使用できるデモビューア
__main__.py
。 - turtle モジュールのさまざまな機能を示す複数のスクリプト。 例には、[例]メニューからアクセスできます。 スタンドアロンで実行することもできます。
turtle.cfg
ファイル。このようなファイルの作成方法と使用方法の例として機能します。
デモスクリプトは次のとおりです。
名前 | 説明 | 特徴 |
---|---|---|
バイトデザイン | 複雑な古典的なタートルグラフィックスパターン | tracer() 、遅延、update()
|
混沌 | グラフVerhulstダイナミクスは、コンピューターの計算が常識的な期待に反する結果を生成する可能性があることを示しています | 世界座標 |
時計 | コンピュータの時刻を示すアナログ時計 | 時計の針としてのカメ、オンタイマー |
カラーミキサー | r、g、bで実験する | ondrag()
|
森 | 3つの幅優先木 | ランダム化 |
フラクタルカーブ | ヒルベルト&コッホ曲線 | 再帰 |
lindenmayer | 民族数学(インドの砂絵) | L-システム |
minimum_hanoi | ハノイの塔 | ハノイディスクとしての長方形のカメ(形状、形状サイズ) |
ニム | コンピューターに対して3つのスティックの山で古典的なニムゲームをプレイします。 | ニムスティックとしてのカメ、イベント駆動型(マウス、キーボード) |
ペイント | 超ミニマルな描画プログラム | onclick()
|
平和 | エレメンタリー | カメ:外観とアニメーション |
ペンローズ | 凧とダーツによる非周期的タイリング | stamp()
|
planet_and_moon | 重力系のシミュレーション | 複合形状、Vec2D
|
round_dance | 反対方向にペアで回転する踊るカメ | 複合シェイプ、クローンシェイプサイズ、チルト、get_shapepoly、更新 |
sort_animate | さまざまな並べ替え方法の視覚的なデモンストレーション | 単純な配置、ランダム化 |
木 | (グラフィック)幅優先ツリー(ジェネレーターを使用) | clone()
|
two_canvases | シンプルなデザイン | 2つのキャンバス上のカメ |
ウィキペディア | タートルグラフィックスに関するウィキペディアの記事のパターン | clone() 、undo()
|
陰陽 | 別の基本的な例 | circle()
|
楽しむ!
Python2.6以降の変更
- メソッド
Turtle.tracer()
、Turtle.window_width()
、およびTurtle.window_height()
は削除されました。 これらの名前と機能を持つメソッドは、Screen
のメソッドとしてのみ使用できるようになりました。 これらから派生した関数は引き続き使用できます。 (実際、Python 2.6では、これらのメソッドは、対応するTurtleScreen
/Screen
メソッドの単なる複製でした。) - メソッド
Turtle.fill()
は削除されました。begin_fill()
とend_fill()
の動作がわずかに変更されました。現在、すべての充填プロセスはend_fill()
呼び出しで完了する必要があります。 - メソッド
Turtle.filling()
が追加されました。 ブール値を返します。充填プロセスが進行中の場合はTrue
、それ以外の場合はFalse
です。 この動作は、Python2.6の引数なしのfill()
呼び出しに対応します。
Python3.0以降の変更
- メソッド
Turtle.shearfactor()
、Turtle.shapetransform()
、およびTurtle.get_shapepoly()
が追加されました。 したがって、カメの形を変換するために、通常の線形変換の全範囲が利用できるようになりました。Turtle.tiltangle()
の機能が強化されました。これを使用して、傾斜角度を取得または設定できるようになりました。Turtle.settiltangle()
は非推奨になりました。 - メソッド
Screen.onkeypress()
は、Screen.onkey()
を補完するものとして追加されました。これは、実際にはアクションをキーリリースイベントにバインドします。 したがって、後者にはエイリアスScreen.onkeyrelease()
があります。 - メソッド
Screen.mainloop()
が追加されました。 したがって、ScreenオブジェクトとTurtleオブジェクトのみを操作する場合は、mainloop()
を追加でインポートしないでください。 Screen.textinput()
とScreen.numinput()
の2つの入力方法が追加されました。 これらのポップアップ入力ダイアログは、それぞれ文字列と数値を返します。Lib/turtledemo
ディレクトリに2つのサンプルスクリプトtdemo_nim.py
とtdemo_round_dance.py
が追加されました。