2015-01-02 4 views
0

Итак, моя цель - выполнить функцию, когда я нажимаю в определенном регионе на экране черепахи. Итак, когда моя черепаха рисует квадрат, и я нажимаю на квадрат, мне нужно что-то случиться.Определите регион в черепахе python

Пример:

turtle.onscreenclick(turtle.goto) 

for i in range(4): 
     turtle.forward(30) 
     turtle.left(90) 

if turtle.position() == (within square region): 
     Activate function() 
+2

Вид зависит от того, как определена ваша квадратная область, нет? –

ответ

0

Вы должны выяснить степень области, определенной площади, так что вы можете сравнить мышь- затем нажмите на позиции позиции и посмотрите, находятся ли они внутри или нет. Вот полная программа, которая сначала позволяет определить нижний левый угол квадрата щелчком, рисует его, а затем вызывает определенную функцию каждый раз, когда мышь нажата внутри прямоугольной области.

import turtle 

def draw_square(x, y): 
    global target_region 

    turtle.penup() 
    turtle.goto(x, y) 
    turtle.setheading(0) 
    turtle.pendown() 
    square = [] 
    for i in range(4): 
     square.append(turtle.pos()) # Save turtle coords 
     turtle.forward(30) 
     turtle.left(90) 

    # Find min and max coordinates of region 
    min_x = min(square, key=lambda p: p[0])[0] 
    min_y = min(square, key=lambda p: p[1])[1] 
    max_x = max(square, key=lambda p: p[0])[0] 
    max_y = max(square, key=lambda p: p[1])[1] 
    target_region = [min_x, min_y, max_x, max_y] 

    turtle.hideturtle() 
    turtle.onscreenclick(check_click) # Switch to next event handler 

def check_click(x, y): 
    if (target_region[0] <= x <= target_region[2] and 
     target_region[1] <= y <= target_region[3]): # Within square region? 
     within_square_region_function() # Call activate function 

def within_square_region_function(): 
    print('clicked in square') 

turtle.onscreenclick(draw_square) # Set initial event handler 
turtle.mainloop() 
+0

Это принесло мне несколько идей, спасибо! – user2848418

0

Если вы имеете в виду позволяя goto внутри только площадь:

import turtle 

def goto_inside(x, y): 
    if 0 <= x <= 30 and 0 <= y <= 30: 
     turtle.goto(x, y) 

turtle.onscreenclick(goto_inside) 

# draw a square 30x30 
for i in range(4): 
    turtle.forward(30) 
    turtle.left(90) 

# turtle.mainloop() 
+0

Думаю, я сформулировал свой вопрос неправильно. Когда вы нажимаете внутри квадрата, черепаха должна использовать свою функцию штампа в щелканном месте. Но только внутри квадрата, что является моей проблемой. Ничего не происходит при нажатии на него. – user2848418

Смежные вопросы