2016-12-08 31 views
0

这应该是一个带有用户输入的菜单驱动程序。我对turtle知之甚少。我知道如何绘制图形,但我拥有的信息并未作为用户的输入。这只是我说如何绘制每个形状。使用Turtle绘制形状的用户输入

我应该导入模块,并有一个菜单,4种选择:

  1. 画一个圆。
  2. 绘制一个矩形。
  3. Draw star。
  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() 
+1

_“我对龟龟知之甚少”_ - 那么适当的地方是[turtle'module的文档](https://docs.python.org/3/library/turtle.html )。它能解释如何使用乌龟模块比我们能做得更好。 –

+0

就可以了。非常感谢 –

+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)”为例)

请务必写不同的代码块的函数中

评论回来,如果它的工作

+0

你也不需要: –

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 

一个更好的办法是消除inifinite环while True:,转而使用像一个计时器事件,弹出初始菜单,以及随后的菜单每绘制完成后。这会让turtle.mainloop()执行并允许其他类型的事件触发。

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