Вот мое переопределение примера tkinter в @ ReblochonMasque с использованием графики черепах:
import turtle
LARGE_RADIUS, SMALL_DIAMETER = 100, 4
def place_point(x, y):
turtle.goto(x, y)
if turtle.distance(0, 0) < LARGE_RADIUS:
turtle.dot(SMALL_DIAMETER)
turtle.setup(width=400, height=400)
turtle.hideturtle()
turtle.speed('fastest')
turtle.penup()
turtle.sety(-LARGE_RADIUS) # center circle at (0, 0)
turtle.pendown()
turtle.circle(LARGE_RADIUS)
turtle.penup()
turtle.onscreenclick(place_point)
turtle.mainloop()
Хотя, как и в Zelle graphics.py, графика черепах реализована поверх tkinter, она использует другую систему координат. С точки зрения сложности и возможностей:
Zelle graphics.py < turtle < tkinter
Если вам кажется, что tkinter слишком сложен для ваших нужд, а Zelle graphics.py недостаточно, рассмотрите графику черепах, которая, как и tkinter, поставляется с Python.
Могу ли я продолжить работу с этим классом графики для выполнения своей задачи?
Возможно. Вот пример следующего шага, с которого вы остановились:
from graphics import *
WIDTH, HEIGHT = 500, 500
LARGE_RADIUS, SMALL_RADIUS = 50, 2
CENTER = Point(WIDTH/2, HEIGHT/2)
def distance_to_center(point):
return ((point.getX() - CENTER.getX())**2 + (point.getY()- CENTER.getY())**2) ** 0.5
win = GraphWin("My Window", WIDTH, HEIGHT)
circle = Circle(CENTER, LARGE_RADIUS)
circle.draw(win)
while True:
point = win.getMouse()
if distance_to_center(point) < LARGE_RADIUS:
dot = Circle(point, SMALL_RADIUS)
dot.draw(win)