【问题标题】:User input to draw shapes using Turtle使用 Turtle 绘制形状的用户输入
【发布时间】:2016-12-08 01:05:39
【问题描述】:

这应该是一个带有用户输入的菜单驱动程序。我对turtle知之甚少。我确实知道如何绘制形状,但我所拥有的信息不是用户输入的。我只是说每个形状将如何绘制。

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

  1. 画一个圆圈。
  2. 画一个矩形。
  3. 画星星。
  4. 退出。

我不知道如何创建或导入模块,我不知道如何添加用户输入,我不知道如何创建菜单......

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

import turtle 

smart = turtle.Turtle()

for i in range(4):
    smart.forward(50)
    smart.right(90)

turtle.done()


## draw a polygon with turtle




import turtle 

polygon = turtle.Turtle()

num_sides = 6
side_length = 70
angle = 360.0 / num_sides 

for i in range(num_sides):
    polygon.forward(side_length)
    polygon.right(angle)

turtle.done()



### random shape .... star



import turtle 

star = turtle.Turtle()

for i in range(50):
    star.forward(50)
    star.right(144)

turtle.done()

【问题讨论】:

  • “我对海龟知之甚少” - 那么合适的去处是 [turtlemodule 的文档] (docs.python.org/3/library/turtle.html)。它可以比我们更好地解释如何使用 turtle 模块。
  • 就可以了。非常感谢
  • 非常欢迎您 :-)

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


【解决方案1】:

使用 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.多次导入turtle 2. 创建一个新的海龟(以“turtle.forward(100)”为例)

确保在函数中编写不同的段代码

如果成功了请评论

【讨论】:

  • 另外你不需要:
【解决方案2】:

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

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() 代替,但要仔细解析用户输入!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2021-04-12
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多