![]()
EINFÜHRUNG |
|
Bei Applikationen mit einer grafischen Benutzeroberfläche (GUI) wird der Programmablauf in der Regel durch Ereignisse (Events) gesteuert. Solche Programme laufen nicht mehr sequentiell ab, da die Ereignisse jeder Zeit vorkommen können. Wenn du einen Mausklick machst oder mit die Maus mit gedrückten Maustaste bewegst, wird diese vom System registriert und und es wird sogenanne Callbackfunktion aufgerufen. Solche Callbackfunktionen kannst du selbst programmieren, d.h. du kannst der Turtle sagen, was sie bei einem Mausklick oder Mausbewegung tun soll. |
AUF MAUSKLICK REAGIEREN |
In der Funktion mousePressed() definierst du, was bei einem Mausklick geschehen soll. Die aktuellen Koordinaten des Mausklicks kannst du in den Variablen x, y gespeichern. Dabei werden mit toWindowX() und to WindowY() die Bildschirmkoordinaten in die GPanel-Koordinaten konvertiert. An der Position (x, y) wird dann ein kleiner Kreis gezeichnet. from gpanel import * makeGPanel(0, 400, 0, 400) for y in range(0, 400, 10): for x in range(0, 400, 10): setColor(getRandomX11Color()) move(x + 5, y + 5) fillRectangle(10, 10) delay(1) Programmcode markieren
|
MAUS BEWEGUNG ERFASSEN |
Das Zeichnen erfolgt mit folgendem Trick: Du klickst zuerst irgendwo im Fenster - das ist der Startpunkt (x0, y0), dann bewegst du die Maus. Bei jeder kleinsten Bewegung werden die neuen Koordinaten x1 und y1 erfasst und eine kleine Verbindungslinie zwischen dem Startpunkt und dem neuen Punkt gezeichnet. Dann wird der neue Punkt zu (x0, y0) und wieder ein neuen Punkt (x1, y1) erfasst. Achtung: Die Koordinaten x0, y0 müssen als global definiert werden, damit sie aus der Methode mousePressed() an die Methode mouseDragged() übergeben werden können.
from gpanel import * def drawStone(x, y): setColor(getRandomX11Color()) move(x + size/2, y + size/2) fillRectangle(size, size) makeGPanel(0, 400, 0, 400) size = 50 for x in range(0, 400, size): for y in range(0, 400, size): drawStone(x, y) Programmcode markieren
|
AUFGABEN |
|