Farben
# -*- coding: utf-8 -*-
# Python für Kids (4. Auflage) - Kapitel 13
# Ereignisgesteuerte Programme
# Autor: Gregor Lingl
# Datum 16. 8. 2009
# scribble - ein einfaches Zeichenprogramm
# (1) Stift zeichnet eine Linie zur (links) angeklickten Stelle
# (2) Stift springt (ohne Zeichnen) zur mit mittlerer Taste
# angeklickten Stelle
# (3) Stift kritzelt, wenn er gezogen wird
# (4) rechte Maustaste schaltet füllen ein und aus
# (5) undo() - Funktion des Stiftes an BackSpace-Taste binden
# clear() - Funktion des Stiftes an die Leertaste binden
# (6) Strichdicken 1..9 an Tasten "1" .. "9" binden
# (7) Farbknöpfe:
# - mit linker Maustaste anklicken: Zeichenfarbe
# - mit rechter Maustaste anklicken: Füllfarbe
from turtle import *
import sys
sys.setrecursionlimit(20000)
def jump(x, y):
if x < -360: return
stift.penup()
stift.goto(x, y)
stift.pendown()
def moveto(x, y):
if x < -360: return
stift.goto(x,y)
def fuellenumschalten(xdummy, ydummy):
if xdummy < -360: return
if stift.fill():
stift.end_fill()
#stift.fillcolor("")
else:
stift.begin_fill()
#stift.fillcolor("black") # fuellanzeiger.fillcolor())
def farbButton(farbe, y):
t = Turtle(visible=False)
t.shape("square")
t.speed(0)
t.pu(); t.goto(-380,y);
t.fillcolor(farbe)
def setpencolor(xdummy, ydummy, c=farbe):
stift.pencolor(c)
def setfillcolor(xdummy, ydummy, c=farbe):
stift.fillcolor(c)
t.onclick(setpencolor)
t.onclick(setfillcolor, 3)
t.showturtle()
#screen = Screen()
clear()
setup(840, 600)
screensize(800, 600)
stift = Turtle()
stift.speed(0)
stift.shape("circle")
stift.shapesize(0.4, 0.4, 3)
stift.pensize(3)
onscreenclick(moveto)
onscreenclick(jump, 2)
onscreenclick(fuellenumschalten, 3)
stift.ondrag(moveto)
for (f,y) in (("red", 160), ("green", 120), ("blue", 80),
("yellow", 40), ("cyan", 0), ("magenta", -40),
("black", -80), ("white", -120)):
farbButton(f, y)
onkey(stift.undo, "BackSpace")
for c in "123456789":
def setpensize(ps=int(c)):
stift.pensize(ps)
stift.shapesize(0.1 + ps/10)
onkey(setpensize, c)
onkey(stift.clear, "space")
listen()
mainloop()