Холсты повсеместно используются во многих нетривиальных графических интерфейсах, и далее в этой книге можно будет увидеть более крупные примеры использования холстов, в программах PyDraw, PyPhoto, PyView, PyClock и PyTree. А сейчас сразу займемся примером, в котором демонстрируются основы его применения. В примере 9.13 используется большинство основных методов создания изображений на холсте.
Пример 9.13. PP4E\Gui\Tour\canvas1.py
“демонстрация основных возможностей холста”
from tkinter import *
canvas = Canvas(width=525, height=300, bg=’white’) # 0,0 — верхний левый угол
canvas.pack(expand=YES, fill=BOTH) # рост вниз и вправо
canvas.create_line(100, 100, 200, 200) # fromX, fromY, toX, toY
canvas.create_line(100, 200, 200, 300) # рисование фигур
for i in range(1, 20, 2):
canvas.create_line(0, i, 50, i)
canvas.create_oval(10, 10, 200, 200, width=2, fill=’blue’) canvas.create_arc(200, 200, 300, 100)
canvas.create_rectangle(200, 200, 300, 300, width=5, fill=’red’) canvas.create_line(0, 300, 150, 150, width=10, fill=’green’)
photo=PhotoImage(file=’../gifs/ora-lp4e.gif’)
canvas.create_image(325, 25, image=photo, anchor=NW) # встроить изображение
widget = Label(canvas, text=’Spam’, fg=’white’, bg=’black’) widget.pack()
canvas.create_window(100, 100, window=widget) # встроить виджет
canvas.create_text(100, 280, text=’Ham’) # нарисовать текст
mainloop()
Запущенный сценарий создаст окно, изображенное на рис. 9.23. Ранее уже было показано, как поместить на холст графическое изображение и установить соответствующие ему размеры холста (раздел «Изображения» в конце главы 8). Этот сценарий изображает также фигуры, текст и даже встроенный виджет Label. Его окно пока ограничивается только отображением — чуть ниже будет показано, как добавить обработчики событий, дающие пользователю возможность взаимодействовать с отображаемыми элементами.
Рис. 9.23. Окно сценария canvas1 с изображениями объектов
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011