Опрацювання зображень

Малювання в Tkinter реалізовано за допомогою віджету Canvas. Це функціонал високого рівня, який дозволяє створювати графіку в Tkinter . Малювання можна використовувати для створення графіків статистики, саморобних віджетів і навіть невеликих ігор. 

При створенні екземпляра Canvas необхідно вказати його ширину і висоту. При розміщенні геометричних примітивів та інших об'єктів вказуються їх координати на полотні. Точкою відліку є верхній лівий кут. 

from tkinter import *        # імпортування графічної бібліотеки

root = Tk()                  # створення головного вікна

c = Canvas(root, width=200, height=200) # створення полотна 200 x 200

c.pack()

root.mainloop() # задання команди відображення вікна при запуску

Малювання ліній (метод create_line)

from tkinter import *                 # імпортування графічної бібліотеки

root = Tk()                           # створення головного вікна


c = Canvas(root, width=200, height=200)            # створення полотна 

c.pack()


c.create_line(15, 10, 180, 100)        # малювання лінії з початком в       #точці (15,10) та кінцем (180,100)


c.create_line(50, 180, 170, 120,      # координати другої лінії

             fill='red',              # колір лінії

             width=5,                 # ширина лінії

             dash=(10, 2),           # для малювання штрихами (довжина             #пунктиру, довжина пропуску)

             activefill='yellow',    # колір лінії, коли над нею мишка

             arrow=LAST,              # розміщення стрілки в кінці лінії

             arrowshape="10 30 10")    # розміри стрілки


root.mainloop()           # задання команди відображення вікна при запуску


Малювання прямокутників (метод create_rectangle)

from tkinter import *                              # імпортування графічної бібліотеки

root = Tk()                                        # створення головного вікна

c = Canvas(root, width=200, height=200)            # створення полотна шириною та висотою 200

c.pack()

c.create_rectangle(10, 10, 100, 190)    # малювання першого прямокутника з лівою верхньою вершиною (10,10) та 

                                       # правою нижньою (100,190)


c.create_rectangle(120, 50, 190, 120,               # вершини другого прямокутника

                  fill='lightpink',                # колір заливки

                  outline='blue',                  # колір межі

                  width=3,                         # ширина межі

                  activedash=(5, 4))               # коли над прямокутником миша, межа стає штриховою


root.mainloop()                                    # задання команди відображення вікна при запуску


Малювання ламаної (метод create_polygon)

from tkinter import *               # імпортування графічної бібліотеки

root = Tk()                         # створення головного вікна

c = Canvas(root, width=200, height=200)  

c.pack()

c.create_polygon(160, 10, 20, 180, 180, 90,   # координати вершин 

                fill='orange',                    # колір заливки

                outline='black')                  # колір межі

root.mainloop()           # задання команди відображення вікна при запуску

Малювання овалів (метод create_oval)

from tkinter import *                  # імпортування графічної бібліотеки

root = Tk()                            # створення головного вікна

c = Canvas(root, width=200, height=220)      

c.pack()

c.create_oval(10, 10, 190, 100)              # малювання першого овалу


c.create_oval(50, 110, 150, 210,    # вершини прямокутника, у який #вписується овал

             width=10,                            # ширина межі

             fill='lightyellow',                  # колір заливки

             outline='lightgreen')                # колір межі


root.mainloop()         # задання команди відображення вікна при запуску


Додавання зображень на полотно

Для виведення зображення застосовується метод create_image(), який як обов'язково параметр приймає координати зображення. Для встановлення самого зображення в метод через параметр image передається посилання на зображення:

from tkinter import *

root = Tk()

root.title("Fish")

canvas = Canvas(bg="white", width=1980, height=1020)

canvas.pack()

fish_image = PhotoImage(file='fish.png') 

canvas.create_image(50, 50, anchor=NW, image=fish_image)

root.mainloop()

Методи, призначені для переміщення об’єкта полотном: 

'''Організуємо горизонтальний рух круга по полотну. Перший створений об’єкт (круг) автоматично отримує ідентифікатор 1:'''

import time

from tkinter import*

tk = Tk()

canvas = Canvas(tk, width = 400, height = 400)

canvas.pack()

canvas.create_oval(10, 10, 30, 30, fill = 'red')

for x in range(0, 60):

         canvas.move(1, 5, 0) # Переміщення об’єкта із ідентифікатором 1

         tk.update()

         time.sleep(0.05)

'''Блок коду в циклі for призначено для пересування круга по полотну. Зокрема, команда canvas.move(1, 5, 0) пересуне об’єкт із ідентифікатором 1 (це і є круг) на 5 пікселів праворуч і 0 пікселів по вертикалі.


Для пересування ліворуч знадобилася б команда canvas.move(1, –5, 0).


Для руху по діагоналі слід змінювати одночасно координати х і у:

canvas.move(1, 5, 5).'''

ПРАКТИЧНА РОБОТА (частина 1)

Створити програму переміщення маленької рибки по екрану (завантажте зображення рибки з сайту вчителя).


УВАГА! Зображення мають розміщуватись у папці поруч з файлом програми! 

ПРАКТИЧНА РОБОТА (частина 2)

Створіть програму, що за обраним сезоном (використайте перемикачі) виводитиме зображення зими, весни, літа або осені.

1. Завантажте з сайта вчителя 4 зображення сезонів.

2. Створіть об’єкти для кожного з 4 зображень.

3. Створіть групу з 4 перемикачів з відповідними написами.

4. Опишіть функцію, що буде змінювати зображення відповідно до обраного перемикача.

УВАГА! Зображення мають розміщуватись у папці поруч з файлом програми! 

ДОМАШНЄ ЗАВДАННЯ