Unten finden Sie eine einfache Lösung für eine rote, linke Taste, eine grüne, rechte Taste und eine "Exit" -Taste, um das Programm zu beenden. Ich habe die Rechtecke, die die Schaltflächen darstellen, neu angeordnet, so dass P1 die untere linke Ecke und P2 die obere rechte Ecke ist. Dies vereinfacht den Test, um zu sehen, ob der angeklickte Punkt innerhalb der Schaltfläche war. (Können Sie machen den Code anspruchsvollere diese Annahme zu entfernen.)
from graphics import *
WINDOW_WIDTH, WINDOW_HEIGHT = 200, 150
win = GraphWin("Simple Breakout", WINDOW_WIDTH, WINDOW_HEIGHT)
def buttons():
left = Rectangle(Point(25, 55), Point(55, 85)) # points are ordered ll, ur
right = Rectangle(Point(145, 55), Point(175, 85))
quit = Rectangle(Point(85, 116), Point(115, 146))
left.setFill("red")
right.setFill("green")
text = Text(Point(100, 133), "Exit")
text.draw(win)
left.draw(win)
right.draw(win)
quit.draw(win)
return left, right, quit
def inside(point, rectangle):
""" Is point inside rectangle? """
ll = rectangle.getP1() # assume p1 is ll (lower left)
ur = rectangle.getP2() # assume p2 is ur (upper right)
return ll.getX() < point.getX() < ur.getX() and ll.getY() < point.getY() < ur.getY()
left, right, quit = buttons()
centerPoint = Point(WINDOW_WIDTH/2, WINDOW_HEIGHT/2)
text = Text(centerPoint, "")
text.draw(win)
while True:
clickPoint = win.getMouse()
if clickPoint is None: # so we can substitute checkMouse() for getMouse()
text.setText("")
elif inside(clickPoint, left):
text.setText("left")
elif inside(clickPoint, right):
text.setText("right")
elif inside(clickPoint, quit):
break
else:
text.setText("")
win.close()
Wenn Sie die roten oder grünen Schaltflächen klicken, werden Sie erhalten „links“ oder „rechts“ in der Mitte des Fensters gedruckt, andernfalls kein Text erscheint: