Nachschlagen

Dokumentation

appJar allgemein: http://appjar.info/
canvas: https://infohost.nmt.edu/tcc/help/pubs/tkinter/web/canvas.html

Animation

canvas.move(c, delta_x, delta_y)
verschiebt das Objekt c auf dem canvas um die in delta_x, resp. delta_y angegebenen Werte.

canvas.coords(c, x1, y1, x2, y2)
setzt neue Koordinaten (x1,y1) und (x2,y2) für das Objekt c auf dem canvas.

canvas.itemconfig(c, fill="pink")
Alle weiteren Optionen lassen sich mit der Funktion itemconfig anpassen. Also z.B. width, fill und outline

Ereignisse (Buttons)

Wenn man mit addButton() dem GUI einen Knopf hinzufügt, so gibt man im zweiten Argument die Funktion an, welche bei einem Klick auf den Button ausgeführt werden soll:

def sayHello():
    print("Guten Tag, wie geht es?")

app.addButton("hallo", sayHello)

Ereignisse (Tastatur)

Keyboard-Events müssen mit bindKey im GUI registriert werden. Dabei wir die Funktion angegeben, welche beim Event aufgerufen werden soll. In der Funktion können wir über das mitgelieferte Argument key herausfinden, welche Taste gedrückt worden ist. (Man muss nicht zwingend bei jeder Taste die selbe Funktion registrieren.)

def keyPress(key):
    if key == "a":
        print("Taste a wurde gedrückt")
    elif key == "<Right>":
        print("Taste Pfeil-nach-rechts wurde gedrückt")
    elif key == "<space>":
        print("Die Leertaste wurde gedrückt")

app.bindKey("a", keyPress)
app.bindKey("<Right>", keyPress)
app.bindKey("<space>", keyPress)

Ereignisse (Maus)

Mouse-Events können auf einem GUI-Element – z.B. einem Canvas – mit bind() registriert werden. Dabei gibt das erste Argument den Typ des Events an (welcher Knopf, ob runterdrücken oder loslassen, ob Maus bewegt, ...) und das zweite Argument die aufzurufende Funktion. Die Funktion, welche beim Event aufgerufen wird, erhält als Argument die Koordinaten der Maus. Damit lassen sich z.B. Linien zeichnen:

def mousePressed(event):
    global x, y
    x = event.x
    y = event.y

def mouseReleased(event):
    x2 = event.x
    y2 = event.y
    app.addCanvasLine("c1", x, y, x2, y2)

canvas.bind("<ButtonPress-1>", mousePressed)
canvas.bind("<ButtonRelease-1>", mouseReleased)

Weitere Mouse-Events sind <B1-Motion> sowie alle Varianten für die mittlere und rechte Maustaste (einfach die 1 durch eine 2 oder 3 ersetzten).

Farben

Vordefiniert: https://pythonhosted.org/ete2/_images/svg_colors.png
RGB-Mischer: https://projects.calebevans.me/rgb-mixer/

Zufallszahlen

Zuerst muss man das random-Modul importieren. Anschliessend können Zahlen zufällig erstellt werden:

import random

# wähle eine Zahl zufällig zwischen 0 und 100
zahl = random.randint(0, 100)