Python 使用 turtle 按钮

标签 python button turtle-graphics

我正在尝试用 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/

相关文章:

python - 计算大型相关矩阵的内存有效方法?

python - 在特殊情况下在 python 中使用 switch case

java - 无法在 Java AWT 中重新定位一个文本字段

WPF 按钮在一个站点上像素化

java - Java 中的 turtle 不工作 - 类

python - 用鼠标指针移动 python turtle

python - 如何在集群上启用 MPI 的应用程序中使用 scipy.weave.inline?

Python 子字符串替换

javascript - 为什么 HTML 按钮图像不会缩小?

python - 在 python 中更快地绘图