我正在尝试用 Python 实现 Simon Says 的家庭作业。我正在尝试使用 turtle 库(要求)来做到这一点。
但是,我遇到了一个绊脚石,虽然我可以让屏幕注册点击事件(目前只打印 x,y 坐标),但我无法让它等待点击事件。
具体来说,我打算做的是在屏幕上设置一些区域,当他们在该位置内单击时,就好像他们单击了一个按钮一样。屏幕清除,游戏会做任何事情。
然而,在尝试获得一个工作“按钮”的实验中,它所做的只是设置它,以便它打印 x,y 坐标,但程序的其余部分完成。没有等待用户点击任何东西。我尝试了一种阻止方法...
while clicked == False:
pass
或
while clicked == False:
time.sleep(1)
但是这两种方法都会挂起程序,直到我手动中断然后它会打印点击。
我是不是在某处遗漏了一个选项?
最佳答案
turtle 没有按钮,但它们确实有点击回调。
此外,您应该为 Screen
使用 onclick
来检测一般点击,为 turtle
使用 onclick
来检测 turtle 中的点击。例如,您可以使用动态形状制作 4 只不同颜色的大 turtle 。
另外,turtle是基于Tk的,所以你必须知道mainloop()
以下程序为 Python 2.7.5 提供了一些提示。
import turtle as t
from random import randint
class MyTurtle(t.Turtle) :
def __init__(self,**args) :
t.Turtle.__init__(self,**args)
def mygoto(self,x,y) :
t1.goto(x,y)
print x,y
def randonics(self,x,y) :
self.left(randint(90,270))
def minegoto(x,y) :
print x,y
t1.goto(x,y)
wt=t.Screen()
t1=MyTurtle()
wt.register_shape("big",((0,0),(30,0),(30,30),(0,30)))
t1.shape("big")
wt.onclick(t1.mygoto,btn=1)
wt.onclick(minegoto,btn=2)
t1.onclick(t1.randonics,btn=3)
t1.goto(100,100)
t.mainloop()
关于Python 使用 turtle 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035132/