2016-04-13 19 views
0

Şu anda python's Turtle Graphics'da bir program yapıyorum. İşte benim kodum ihtiyaç duyduğunuzda.Python Turtle - Etkinlikler Tıklayın

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

Tıklama olayları istiyorum. Yani, 'This is an example' metninin yazıldığı yerde, bunu tıklayabilmek istiyorum ve konsola bir şey yazdırıyor ya da arka planı değiştiriyor. Bunu nasıl yaparım?

DÜZENLEME: pygame böyle bir şey yüklemek istemiyorum

, o zaman pozisyon almak (sizin mainloop kendisine hareket etmeye Turtle

+0

şartının olarak metin alanı pozisyonuna sadece belirli ekran rengini değiştirmek için herhangi bir yere tıklandığında ekran rengini değiştirecek benim eski yazı Güncelleme –

cevap

0

senin gereksinimi metin alanı çevresinde onscreenclick olması olduğundan, mouse'un konumunu gerekir. Bunun için, ekran öğesine onTextClick işlevini bağlıyoruz. This is an example numaralı metinle çevrilmişse, arka plan rengini red olarak değiştirmek için turtle.onscreenclick aramasına bir çağrı yapılır. Sen lambda işlevini değiştirmek ve kendi eklemek, ya da sadece dış işlev oluşturmak ve mümkün olduğunca kod kadar az değiştirmeye çalıştı

this documentation göre turtle.onscreenclick içinde çağırabilir. İşte

bir çalışma Kod geçerli:

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() 
İlgili konular