Как контролировать открытие и закрытие графического окна черепахи? - PullRequest
0 голосов
/ 19 февраля 2019

Я пишу программу для генерации изображений с использованием графического модуля python turtle.Есть ли способ контролировать, когда окно открывается и закрывается?Я знаю, что turtle.bye() и turtle.exitonclick() закрывают окно, но тогда проблема открыть его снова.

В настоящее время я открываю окно, просто назначая turtle.Turtle() такой переменной:

t = turtle.Turtle()

Я посмотрел в документации, а также здесь, но ничего не нашел.

1 Ответ

0 голосов
/ 19 февраля 2019

Вот кое-что, демонстрирующее, как скрыть и снова отобразить графическое окно черепахи, не требуя ввода данных пользователем.Он использует метод tkinter after() для планирования будущего вызова функции, которую я назвал do_turtle_stuff() (если вам интересно).

Это достигается путем "достижения впокрывает "и получает базовое tkinter корневое окно и манипулирует им.Чтобы позволить пользователю выполнить несколько «команд», он перепланирует себя, чтобы запустить усиление, вызвав саму after() (если пользователь не набрал «exit»).Вам может не понадобиться это для того, что вы делаете.

import turtle


def do_turtle_stuff(root):
    user_input = input('Enter command ("foo", "bar", or "exit"): ')

    if user_input == "exit":
        root.withdraw()  # Hide the turtle screen.
        root.quit()  # Quit the mainloop.
        return
    elif user_input == "foo":
        turtle.forward(50)
        turtle.left(90)
        turtle.forward(100)
    elif user_input == "bar":
        turtle.forward(100)
        turtle.left(90)
        turtle.forward(100)
    else:
        print('Unknown command:', user_input)

    root.after(0, lambda: do_turtle_stuff(root))


root = turtle.getscreen()._root
root.after(0, lambda: do_turtle_stuff(root))
root.mainloop()

print('back in main')
input('Press Enter key to do more turtle stuff ')

root.state('normal')  # Restore the turtle screen.
root.after(0, lambda: do_turtle_stuff(root))
root.mainloop()

print('done')
...