Verwenden Sie getMouse(). Dies pausiert für einen Benutzerklick und gibt dann die Position (als Punkt) der Maus in einem Fenster zurück. checkMouse() gibt die Position der Maus zurück, ohne dass ein Klick erforderlich ist.
zum Beispiel:
win = GraphWin('Example Window', 100, 100)
mousePos = win.getMouse()
Jetzt, zu verwenden, um festzustellen, ob der Benutzer auf einem Kreis angeklickt:
def isClicked(circle, mousePos):
distance = sqrt(((mousePos.x - circle.x) ** 2) + ((mousePos.y - circle.y) ** 2))
return distance < circle.radius
die Ihre Funktion seien.
Beispiel für Code, der die Funktion verwenden würden:
from graphics import *
from math import sqrt
def isClicked(circle, mousePos):
distance = sqrt(((point.x - circle.x) ** 2) +
((point.y - circle.y) ** 2))
return distance < circle.radius
def main():
win = GraphWin('Example Window', 100, 100)
circle = Circle(Point(50,50), 25)
circle.setFill('blue')
circle.draw(win)
mousePos = win.getMouse()
if isClicked(circle, mousePos):
print "You clicked in the circle!"
else:
print "You clicked outside the circle!"
main()
gibt es einen anderen Weg, ohne die "from math import sort" zu verwenden? –
Fragen Sie das, weil beim Import aus Mathe ein Fehler auftritt? Auf Tippfehler prüfen. Es ist nicht so. Das steht für "Quadratwurzel". Ich könnte nur ausbleichen, aber ich kann mir keinen Weg vorstellen, um zu berechnen, ob ein Punkt innerhalb des Kreises ist, ohne die Funktionen sqrt oder sine zu verwenden. –
Dieser Beispielcode funktioniert nicht wirklich. Der erste Fehler ist, "NameError: globaler Name 'Punkt' ist nicht definiert" aufgrund eines falsch benannten formalen Parameters zu 'isClicked()'. Aber das behebend, mit dem aktuellen graphics.py scheitert es mit: "AttributeError: Die Kreisinstanz hat kein Attribut 'x'", weil sie versucht, das 'x' eines Kreises zu bekommen, den sie nicht hat, aber stattdessen einen Mittelpunkt hat ein 'x'. – cdlane