2017-09-03 140 views
2

我仍然是編程世界的新手,試圖找到一些幫助。我不明白大部分代碼。我已經嘗試不同的方法來它,我在這裏結束了之前:Python Turtle:當點擊時改變方塊的顏色

import turtle 
import random 

window = turtle.Screen() 
#window.colormode(255) 

square = turtle.Turtle() 
square.speed(0) 
square.hideturtle() 

square.up() 
square.goto(-200, 200) 
square.down() 

for i in range(4): 
    square.forward(50) 
    square.right(90) 

square.up() 
square.goto(-205, 205) 
square.write("Change Color") 


pencil = turtle.Turtle() 
pencil.shape("circle") 

def drawing_controls(x, y): 
    if (-200 <= x <= -150) and (150 <= y <= 200): 
     pencil.color(random.random(), random.random(), random.random()) 

#def sqc (self, x, y): 


window.onclick(drawing_controls) 
#window.onclick(square.pencolor(random.random(), random.random(), 
random.random())) 

pencil.onrelease(pencil.goto) 

與#註釋行是在解決這個令人沮喪的問題我以前的許多嘗試之一。

回答

0

我不確定你的實際目標,但我認爲下面的返工會給你你正在尋找的行爲。而不是畫一個正方形來點擊,烏龜變成被點擊方:

from turtle import Turtle, Screen 
from random import random 

def drawing_controls(x, y): 
    pencil.color(random(), random(), random()) 
    square.color(*pencil.color()) 

def drag_pencil(x, y): 
    pencil.ondrag(None) 
    pencil.goto(x, y) 
    pencil.ondrag(drag_pencil) 

square = Turtle('square', visible=False) 
square.speed('fastest') 
square.hideturtle() 
square.up() 

square.goto(-200, 230) 
square.write('Change Color', align='center') 

square.goto(-200, 200) 
square.shapesize(50/20) 
square.showturtle() 

pencil = Turtle('circle') 

square.onclick(drawing_controls) 

pencil.ondrag(drag_pencil) 

window = Screen() 
window.mainloop() 

相反的onrelease(),我切換到ondrag(),使其更具交互性。然而,使用pencil.goto將無法​​順利運行,儘管它是ondrag()處理程序的常見示例,所以我編寫了一個控制檯,用於在拖動處理程序中禁用拖動事件以平滑運動。

+0

這絕對是我正在尋找的東西,我把廣場改成了一個廣場,它將被點擊而不是用龜來繪製它!但我仍然無法解決着色部分。非常感謝! –

相關問題