Настройка окна и холста в turtle. Методы Screen

Словарь урока

из модуля turtle:
  • teleport ‒ телепорт
  • left ‒ налево
  • forward ‒ вперед
  • fillcolor ‒ цвет (color) заливки (filling)
  • begin_fill ‒ начать (begin) заполнение (fill)
  • end_fill ‒ конец (end) заполнения (fill)
  • circle ‒ круг, окружность
  • Turtle ‒ черепаха
  • speed ‒ скорость
  • clear ‒ чистый, ясный
  • ontimer ‒ по (on) таймеру (timer), или таймер включен (timer on)
  • delay ‒ задержка
  • bgcolor ‒ фоновый (bg ‒ сокращение от background) цвет (color)
  • bgpic ‒ фоновая (bg) картинка (pic ‒ сокращение от picture)
  • title ‒ заголовок
  • window_width ‒ ширина (width) окна (window)
  • window_height ‒ высота (height) окна (window)
  • setup ‒ настройка, настраивать
  • clearscreen ‒ чистый (clear) экран (screen)
из языка Python:
  • def ‒ от define (определять)

До сих пор мы не касались свойств холста, который в терминологии модуля turtle языка Python правильней называть экраном, так как он создается от класса Screen. Другими словами, то, на чем рисует черепаха, это тоже объект, как она сама. Просто другого типа.

С помощью метода bgcolor меняют цвет холста:

bgcolor('lightgreen')
t1 = Turtle()
t2 = Turtle()
delay(200)
t1.forward(100)
t2.left(180)
t2.forward(100)
bgcolor('#ddffa0')

Выше для него сначала устанавливают светлозеленый цвет. Когда все будет сделано, цвет меняется на салатовый. Метод delay также относится к экрану. Он выполняет задержку на указанное количество миллисекунд. В результате обе черепахи будут рисовать с заданной скоростью, и нам не надо настраивать ее отдельно для каждой с помощью метода speed класса Turtle. При выполнении команды left вы увидите как вторая черепаха будет медленно поворачиваться.

Также на холсте можно разместить фоновое изображение. Для этого используется метод bgpic. Ему передается только имя файла, если он находится в том же каталоге, что и файл программы, или имя файла вместе с адресом. Например: bgpic('/home/user/flag.gif'). Если в качестве аргумента передать строку 'nopic', то картинка будет удалена с холста. Так в примере ниже сначала на холсте размещается файл flag.png. После того как первая окружность будет нарисована, он удаляется.

bgpic('flag.png')
circle(100)
bgpic('nopic')
circle(-100)

При запуске использующей модуль turtle программы холст появляется внутри окна (оно имеет кнопки сворачивания, разворачивания и закрытия). И методы объекта типа Screen касаются и его. Так с помощью title мы можем менять его заголовок.

speed(1)
title('Будет нарисован круг')
circle(100)
title('А в нем квадрат')
circle(100, steps=4)

По умолчанию окно появляется в центре экрана монитора. Чтобы узнать размеры окна черепашьей графики, используются методы window_width и window_height.

write(window_width())
teleport(0, -20)
write(window_height())

Этот код выведет числа 960 и 810 (на вашем компьютере ширина и высота по умолчанию могут быть другими).

Многие команды в turtle, когда им не передаются аргументы (метод вызывается с пустыми скобками), возвращают уже ранее присвоенное соответствующему свойству значение. Например, delay, fillcolor, bgpic и другие. Однако window_width и window_height не такие. Они только возвращают текущие значения. Поменять размер окна с их помощью нельзя. С этой целью следует использовать метод setup.

Такой его вызов создаст окно размером 1000 пикселей по ширине и 500 по высоте:

setup(1000, 500)

При этом оно все-равно будет появляться в центре экрана монитора. Если же надо его сместить, то используются еще два параметра. Пример, в котором окно появляется в верхнем левом углу:

setup(1200, 800, 0, 0)

Можно менять не все параметры окна, а только отдельные. В этом случае передавать аргументы надо через присваивание их параметрам setup. Имена параметров: width, height, startx, starty. Например, такое окно будет "прибито" к низу экрана, но останется в центре по горизонтали, также у него изменится высота, но ширина будет той, что задана по-умолчанию:

setup(height=500, starty=-1)

Отрицательные значения для startx и starty означают отсчет от правого и нижнего краев экрана.

Размер окна с черепашьей графикой меняется не только с помощью команды setup. Это может происходить в процессе выполнения программы, когда пользователь уменьшает или увеличивает окно. Рассмотрим код, который постоянно запрашивает размеры и выводит их на холсте:

def f():
    clearscreen()
    teleport(0, 0)
    write(window_width())
    teleport(0, -20)
    write(window_height())
    ontimer(f, 2000)

ontimer(f, 0)

С помощью ontimer (который, кстати, также является методом экрана), мы сразу запускаем функцию. В ней через каждые две секунды она перезапускается. В теле функции мы очищаем холст с помощью экранного метода clearscreen и заново выводим ширину и высоту окна.

Задания для самостоятельной работы

  1. Разработайте программу, которая окрашивает одну половину холста в один цвет, а вторую ‒ в другой.
  2. Чтобы увидеть разницу между командами clear (метод черепахи) и clearscreen (метод экрана) напишите код по следующему описанию. Первая черепаха рисует одну фигуру, вторая ‒ другую. Если нажать клавишу 1 на клавиатуре, графика первой черепахи удаляется и заново перерисовывается ей. При нажатии на 2 уже вторая черепаха перерисовывает свою фигуру. Если нажать 0, очищается весь экран, и обе черепахи заново рисуют.

Turtle. Программирование на Python для школьников




Все разделы сайта