Настройка окна и холста в turtle. Методы Screen
Словарь урока
из модуля turtle: |
|
---|---|
из языка Python: |
|
До сих пор мы не касались свойств холста, который в терминологии модуля 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
и заново выводим ширину и высоту окна.
Задания для самостоятельной работы
- Разработайте программу, которая окрашивает одну половину холста в один цвет, а вторую ‒ в другой.
- Чтобы увидеть разницу между командами
clear
(метод черепахи) иclearscreen
(метод экрана) напишите код по следующему описанию. Первая черепаха рисует одну фигуру, вторая ‒ другую. Если нажать клавишу 1 на клавиатуре, графика первой черепахи удаляется и заново перерисовывается ей. При нажатии на 2 уже вторая черепаха перерисовывает свою фигуру. Если нажать 0, очищается весь экран, и обе черепахи заново рисуют.