使用Turtle绘制形状的用户输入

时间:2016-12-08 01:05:40

标签: python python-3.x menu shape turtle-graphics

这应该是一个带有用户输入的菜单驱动程序。我对module.min.js知之甚少。我知道如何绘制形状,但我没有给出用户输入的信息。我只是说一下每个形状的绘制方式。

我应该导入一个模块,并有一个包含4个选项的菜单:

  1. 画一个圆圈。
  2. 画一个矩形。
  3. 画星。
  4. 退出。
  5. 我不知道如何创建或导入模块,我不知道如何添加用户输入,我也不知道如何创建菜单...

    到目前为止,我所拥有的是下面粘贴的代码。是完全错误还是只需要调整以符合上述标准?

    turtle

2 个答案:

答案 0 :(得分:0)

使用Tkinter。 使用此模板:

from Tkinter import * #the module could also be called tkinter (no caps)

root = Tk()

def circle():
    turtle.clear()
    #Cirle drawing code
def rectangle():
    turtle.clear()
    #rectangle drawing code
def star():
    turtle.clear()
    #star drawing code
def quit1():
    root.destroy()

circler = Button(root,text="Circle", command=circle)
rectangler = Button(root,text="Rectangle", command=rectangle)
starer = Button(root,text="Star", command=star)
quiter = Button(root,text="Quit", command=quit1)
circler.pack()
rectangler.pack()
starer.pack()
quiter.pack()
root.mainloop()

你也需要: 1.不止一次进口龟 2.创建一个新的乌龟(例如,使用“turtle.forward(100)”)。

确保在函数

中编写不同的代码片段

回顾是否有效

答案 1 :(得分:0)

您不需要使用像Tkinter这样的模块来实现菜单,而是可以使用Python 3龟新手中的一种图形输入方法来完成:

turtle.textinput(title, prompt)
turtle.numinput(title, prompt, default=None, minval=None, maxval=None)

这是一个骨架的例子:

import turtle

def circle():
    turtle.reset()
    pass  # Circle drawing code

def rectangle():
    turtle.reset()
    pass  # rectangle drawing code

def star():
    turtle.reset()
    pass  # star drawing code

COMMANDS = [None, circle, rectangle, star, exit]
ABORT = len(COMMANDS) - 1
PROMPT = "1. Draw a circle\n2. Draw a rectangle\n3. Draw a star\n4. Quit"

while True:
    choice = turtle.numinput("Pick a number", prompt=PROMPT, default=ABORT, minval=1, maxval=ABORT)

    if choice is None:
        choice = ABORT
    else:
        choice = int(choice)

    if 1 <= choice <= ABORT:
        COMMANDS[choice]()

turtle.mainloop()  # never reached

更好的方法是消除无限循环while True:,而是使用像计时器事件这样的东西来调出初始菜单,以及每次绘制完成后的后续菜单。这将允许turtle.mainloop()执行并允许其他类型的事件触发。

如果您想允许文本输入而不是简单的数字选择,您可以改用turtle.textinput(),但要仔细解析用户输入!