Найдите место события onclick () в черепахе Python - PullRequest
0 голосов
/ 22 сентября 2018

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

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

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)

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

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

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()

enter image description here

0 голосов
/ 22 сентября 2018

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

...