next up previous contents index 6264666870
Next: 6.5 Canvas und Scrollbars Up: 6. Tk_Intern: Canvas Previous: 6.3 Weitere Canvas-Items   Contents   Index

6.4 Canvas und Turtle

Im Abschnitt [*], in dem wir Einiges über Turtle-Klassen gesagt haben, wiesen wir daraufhin, dass es eine Klasse mit dem Namen RawPen gibt, die es uns erlaubt, in regulären Canvases eine Turtle einzubauen. Wie das geht, zeigt das folgende Beispiel:

file: canvas2.py

from Tkinter import *

from turtle import *

canvas=Canvas(width=320, height=240, bg='gray')

canvas.pack(expand=YES)

widget=Canvas(canvas, width=200, height=200, bg='white')

widget.pack(padx=200,pady=40)

def neck(canvasname, eckenzahl, laenge, breite, col, tpen):

  winkel=360/eckenzahl

  tpen.width(breite)

  tpen.color(col)

  for i in range (eckenzahl):

  tpen.forward (laenge)

  tpen.left(winkel)

def rosette(canvasname, eckenzahl, laenge, breite, col, drehwinkel,tpen):

  for i in range(360/drehwinkel):

  neck(canvasname, eckenzahl, laenge, breite, col, tpen)

  tpen.left(drehwinkel)

  

turtlepen=RawPen(canvas)

turtlepen.up()

turtlepen.goto(-80,-40)

turtlepen.down()

turtlepen.tracer(0)

rosette(canvas,10,20,1,'red',36,turtlepen)

turtle=RawPen(widget)

turtle.up()

turtle.down()

turtle.tracer(0)

rosette(widget,10,20,1,'blue',36,turtle)

Es ist möglich, mit einem RawPen genauso umzugehen wie mit einer ganz gewöhnlichen Turtle der Klasse Pen(), nur dass die Turtle-Prozeduren jetzt als Methoden in Erescheinung treten und bei der Erstellung dasjenige Canvas angegeben werden muss, in dem die Turtle arbeiten soll. Das Ergebnis zeigt die Abbildung [*].
Figure: Turtle vom Typ RawPen() in Aktion
\includegraphics{/home/heikos/lyx/informatik/tkinter/rawpen.eps}


next up previous contents index 6264666870
Next: 6.5 Canvas und Scrollbars Up: 6. Tk_Intern: Canvas Previous: 6.3 Weitere Canvas-Items   Contents   Index
Heiko Schroeder 2003-03-23