Я пытаюсь использовать graphics.py для создания простой графики, которую можно использовать в качестве кнопок. Хотя я знаю, как это сделать, рисуя каждый объект и привязывая его к букве или цифре, я использую цикл для генерации объектов. Я заблудился о том, как связывать каждый объект, созданный с определенной буквой или номером.
Ниже приведен код, над которым я работал, чтобы попытаться найти решение этой проблемы. Функции цикла работают как для создания графики, так и для обнаружения щелчков мыши в них. Где я заблудился, так это как назначить каждому члену списка конкретное назначение буквы или цифры. Приведенный ниже код генерирует три круга, которые я хотел бы связать с буквами A, B, C соответственно, чтобы при щелчке они рисовали букву над графиком.
from graphics import*
import string
def main():
window = GraphWin("Window", 400, 400)
circles1 = keys(window)
# line here to call upon function that draws labels over
# the circles using ascii string removed for relevance
# test for clicking circles
while True:
clickPoint=window.checkMouse()
if clickPoint != None:
for i in circles1:
if mouse(clickPoint, i) == True:
i.undraw()
# i.undraw used to test while loop
def keys(window):
# Define circles as an empty list
circles = []
x = 50
for i in range(3):
x += 50
circle = Circle(Point(0+x, 100), 20)
circle.setFill("black")
circles.append(circle)
circle.draw(window)
return circles
def mouse(point, circle):
x = point.getX()
y = point.getY()
radius = circle.getRadius()
center = circle.getCenter()
cx = center.getX()
cy = center.getY()
distance=(((cx-x)**2)+((cy-y)**2))**0.5
if (distance < radius):
return True
else:
return False
В идеале нажатие на кнопку приведет кбуква, которой он назначен над ним. Спасибо за любую помощь