Найдите место события onclick () в черепахе Python

1

Я не могу узнать, как использовать функцию click

Мне нужна программа, чтобы сделать квадрат с треугольниками, но только там, где я нажимаю на экран, и я не могу понять, почему он только делает это в центре.

import turtle
import random
# create a turtle variable



t = turtle.Turtle()
screen = turtle.getscreen()
my_list =  [4,3,2,1]
# function to draw the square pattern
def draw_square_pattern(x,y): 
 for i in my_list:
  t.pencolor("blue")
  t.pendown()
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.forward(100 * i/4)
  t.left(90)
  t.penup()
  t.forward(12.5)
  t.left(90)
  t.forward(12.5)
  t.right(90)
  t.penup()



# main function

# when click do function
screen.onclick(draw_square_pattern)
Теги:
turtle-graphics

2 ответа

0

Обработчик событий черепахи дает вам позицию, в которой пользователь нажал в качестве аргументов обработчику событий:

def draw_square_pattern(x,y):

но вы игнорируете их. Вы можете просто поднять перо и перейти в положение (x, y). Позвольте доработать ваш код, чтобы сделать это, и немного очистить синтаксис:

from turtle import Screen, Turtle

screen = Screen()

turtle = Turtle()
turtle.pencolor("blue")

my_list = [4, 3, 2, 1]

def draw_square_pattern(x, y):
    """ function to draw the square pattern """

    screen.onclick(None)  # disable handler inside handler!

    turtle.penup()
    turtle.goto(x, y)

    for i in my_list:
        turtle.pendown()

        for _ in range(4):
            turtle.forward(100 * i/4)
            turtle.left(90)

        turtle.penup()

        turtle.left(45)
        turtle.forward(17.7)
        turtle.right(45)

    screen.onclick(draw_square_pattern)

screen.onclick(draw_square_pattern)
screen.mainloop()

Изображение 174551

0

Это не похоже на то, что вы используете x и y в своей функции, но эти координаты важны для рисования черепахи в определенном месте. Сравните координаты x и y с координатами x и y черепахи, а затем используйте эту информацию для перемещения черепахи к этой (x, y) координате. Затем продолжайте свой цикл for, как обычно.

  • 0
    Как бы я использовал это в моей функции?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню