如何在乌龟窗口中获取用户输入?

时间:2017-05-01 13:51:36

标签: python turtle-graphics

我正在为学校做作业,并想知道如何直接从龟窗口而不是从控制台收集用户输入。是否有乌龟按钮的容量,如果没有,点击特定区域的事件,因此屏幕区域可以作为按钮?

1 个答案:

答案 0 :(得分:1)

可以使用海龟模块提供的两种图形输入方法获取用户输入:

  • textinput(标题,提示)
  • numinput(标题,提示,默认=无,minval =无,maxval =无)

这些旨在帮助防止控制台样式输入需要捕获的一些错误。这些是在Python 3中引入的,并不适用于Python 2 turtle。但是,在运行turtle时可以从Python 2调用tkinter等价物 - 搜索SO以获取示例。

如果你想要一个图形按钮,我建议你在问题上扔一只或两只乌龟来成为按钮。适当地调整乌龟的大小,形状和颜色,然后在乌龟上添加onclick()处理程序,而不是屏幕,这样您就可以点击按钮来调用操作:

from turtle import Turtle, mainloop

BUTTON_SIZE = 60
CURSOR_SIZE = 20
FONT_SIZE = 18
FONT = ('Arial', FONT_SIZE, 'bold')
STATES = (('red', 'OFF'), ('green', 'ON'))
INITIAL_STATE = STATES[0]

def toggle_power(x, y):
    color, state = STATES[button.fillcolor() == 'red']

    button.fillcolor(color)
    marker.undo()
    marker.write(state, align='center', font=FONT)

color, state = INITIAL_STATE

button = Turtle('circle')
button.shapesize(BUTTON_SIZE / CURSOR_SIZE, outline=2)
button.color('black', color)
button.penup()
# button.goto(-200, 200)  # move the button into position

marker = Turtle(visible=False)
marker.penup()
marker.goto(button.xcor(), button.ycor() - BUTTON_SIZE/2 - FONT_SIZE - 2)
marker.write(state, align='center', font=FONT)

button.onclick(toggle_power)

mainloop()

上面的按钮逻辑应该可以在Python 3或Python 2中使用。