<p><code>onclick()</code>仅当您单击turtle时有效。每次单击时使用<code>onscreenclick(callback)</code>执行函数。它给你<code>(x,y)</code>,所以你必须计算<code>angle</code>,然后把角度转换成正确的数字。它并不理想,因为它计算屏幕上每次点击的次数,而不仅仅是颜色。在</p>
<pre><code>import turtle
from turtle import *
import colorsys
import math
def arch(radius, degree, width, colour):
color(colour)
pd()
begin_fill()
circle(radius, degree)
lt(90)
fd(width)
lt(90)
circle(-radius+width, degree)
lt(90)
fd(width)
lt(90)
end_fill()
pu()
circle(radius, degree)
pd()
def start():
pu()
rt(90)
fd(200)
lt(90)
def startover():
reset()
main()
def get_number(x, y):
# inform function to use global variable
#global k
angle = 180 - math.degrees(math.atan2(x,y))
angle %= 360
number = int(angle*k/360)
print('Pos:', x, y, 'Angle:', angle, 'Number:', number)
def main():
# Inform function to use global variable when you use `=`
# You will need this value in `get_number
global k
s = turtle.Screen()
#t = turtle.Turtle()
s.colormode(255)
tracer(False)
reset()
start()
k = int(numinput(""," How many colors?"))
colorlist = []
for i in range(k):
colorlist.append(list(colorsys.hsv_to_rgb(i/k,1,255)))
print(colorlist)
for i in range(len(colorlist)):
for j in range(len(colorlist[i])):
colorlist[i][j] = int(colorlist[i][j])
arch(200, 360/k, 100, (colorlist[i]))
onkey(startover, "a")
onscreenclick(get_number)
#listen()
done()
if __name__ == "__main__":
main()
</code></pre>
<hr/>
<p><strong>编辑:</strong><code>turtle</code>在后台使用<code>tkinter</code>,而{<cd6>}功能更强大-即,它具有绘制<code>arc</code>,<code>pieslice</code>等功能,并且可以为画布上的每个对象分配鼠标单击。在</p>
^{pr2}$
<p>在effbot.org网站:<a href="http://effbot.org/tkinterbook/canvas.htm" rel="nofollow noreferrer">The Tkinter Canvas Widget</a></p>