2016-12-08 2 views
0

Предполагается, что это программа с управляемым меню с пользовательским вводом. Я очень мало знаю о 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() 
+1

_ «Я очень мало знаю о черепахе» _ - Тогда подходящее место для этого было бы [Документация для «черепахи») (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(), но тщательно проанализируйте ввод пользователя!

Смежные вопросы