2016-12-08 80 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()來代替,但請仔細解析用戶輸入!