2016-04-13 2 views
0

Я сейчас делаю программу в Turtle Graphics на python. Вот мой код, если вам это нужноPython Turtle - Click Events

import turtle 
turtle.ht() 

width = 800 
height = 800 
turtle.screensize(width, height) 

##Definitions 
def text(text, size, color, pos1, pos2): 
    turtle.penup() 
    turtle.goto(pos1, pos2) 
    turtle.color(color) 
    turtle.begin_fill() 
    turtle.write(text, font=('Arial', size, 'normal')) 
    turtle.end_fill() 

##Screen 
turtle.bgcolor('purple') 
text('This is an example', 20, 'orange', 100, 100) 


turtle.done() 

Я хочу, чтобы события click. Итак, где написан текст 'This is an example', я хочу, чтобы его можно было щелкнуть, и он печатает что-то на консоль или меняет фон. Как мне это сделать?

EDIT:

Я не хочу, чтобы установить что-нибудь подобное Pygame, это должно быть сделано в Turtle

+0

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

ответ

0

Поскольку ваше требование иметь onscreenclick вокруг текстовой области, нам нужно отслеживать положение курсора мыши. Для этого мы связываем функцию onTextClick с screenevent. Внутри функции, если мы все вокруг текста This is an example, делается звонок в turtle.onscreenclick, чтобы изменить цвет фона на red. Вы можете изменить функцию лямбды и вставить свой собственный, или просто создать внешнюю функцию и вызвать в turtle.onscreenclick согласно this documentation

Я попытался изменить свой код как можно меньше.

Вот рабочий код:

import turtle 

turtle.ht() 

width = 800 
height = 800 
turtle.screensize(width, height) 

##Definitions 
def text(text, size, color, pos1, pos2): 
    turtle.penup() 
    turtle.goto(pos1, pos2) 
    turtle.color(color) 
    turtle.begin_fill() 
    turtle.write(text, font=('Arial', size, 'normal')) 
    turtle.end_fill() 


def onTextClick(event): 
    x, y = event.x, event.y 
    print('x={}, y={}'.format(x, y))  
    if (x >= 600 and x <= 800) and ( y >= 280 and y <= 300): 
     turtle.onscreenclick(lambda x, y: turtle.bgcolor('red')) 

##Screen 
turtle.bgcolor('purple') 
text('This is an example', 20, 'orange', 100, 100) 

canvas = turtle.getcanvas() 
canvas.bind('<Motion>', onTextClick)  

turtle.done() 
1

Используйте onscreenclick метод, чтобы получить позицию затем действовать на него в вашей основной цикл (печатать или что угодно).

import turtle as t 

def main(): 
    t.onscreenclick(getPos) 
    t.mainloop() 
main() 

Также смотрите: Python 3.0 using turtle.onclick Смотрите также: Turtle in python- Trying to get the turtle to move to the mouse click position and print its coordinates