понеділок, 22 травня 2017 р.

Створюємо примітивний Paint мовою Python

Отже, спробуємо засобами мови програмування Python та зокрема модуля tkinter створити примітивний Paint. Звичайно наш Paint не зможе зберігати зображення, але у нас буде можливість малювати у вікні програми, різними кольорами, і при необхідності знищити зображення.


Тож, почнемо з того, що підключимо модуль tkinter, та створимо нове вікно із розмірами 500х500 пікселів, але користувач за бажанням може їх змінити:
from tkinter import *
win=Tk()
win.geometry("500x500")
win.mainloop()
Тепер створимо полотно для малювання з розмірами 1280х800 пікселів (це найбільше розширення мого екрану), і розмістимо його в 0 пікселях від верхнього і лівого краю:
canv=Canvas(win, width=1280, height=800, bg="white")
canv.place(x=0, y=0)
Тепер додамо подію B1-Motion (натискання лівої клавіши миші та рух курсора) для нашого полотна і при виконанні цієї події буде запускатися функція draw. draw включає в себе функцію створення еліпса із кольором color (початкове значення даної змінної - "black"). Ось, що ми маємо:
def draw(event):
    canv.create_oval(event.x-2,
                     event.y-2,
                     event.x+2,
                     event.y+2,
                     fill=color, outline=color)
...
canv=Canvas(win,width=1280,height=800,bg="white")
canv.place(x=0, y=0)
color="black"
canv.bind("<B1-Motion>", draw)
event.x - положення курсора по горизонталі; event.y - положення курсора по вертикалі. При додаванні та відніманні 2 пікселів, ми зробили так, що курсор миші буде знаходитися в центрі побудованого кола, а діаметр побудованого кола - 5 пікселів.

Створимо 5 кнопок із варіантами кольорів (чорний, синій, зелений, червоний та жовтий). Розмістимо їх у верхньому лівому краю вікна:
but1=Button(win, text="black", bg="black", fg="white", font="12", width="5")
but1.place(x=5, y=5)
but2=Button(win, text="blue", bg="blue", fg="white", font="12", width="5")
but2.place(x=5, y=45)
but3=Button(win, text="green", bg="green", fg="white", font="12", width="5")
but3.place(x=5, y=85)
but4=Button(win, text="red", bg="red", fg="black", font="12", width="5")
but4.place(x=5, y=125)
but5=Button(win, text="yellow", bg="yellow", fg="black", font="12", width="5")
but5.place(x=5, y=165)
 Також, створимо кнопку для очищення робочого простору в один клік:
but6=Button(win, text="CLEAN", font="11", width="7")
but6.place(x=70, y=5)
Ну, а тепер приступаємо до найцікавішого - створення подій та функцій, аби все працювало. Отже оголосимо події Button-1 для всіх кнопок. Також створимо функції для зміни значень змінної color, та очищення полотна:
def black(event):
     global color
     color="black"
def blue(event):
     global color 
     color="blue"
def green(event): 
     global color 
     color="green"
def red(event): 
     global color 
     color="red"
def yellow(event): 
     global color 
     color="yellow"
def clean(event): 
     canv.delete("all")
...
but1.bind("<Button-1>", black)

but2.bind("<Button-1>", blue)
but3.bind("<Button-1>", green)
but4.bind("<Button-1>", red)
but5.bind("<Button-1>", yellow)
but6.bind("<Button-1>", clean)
Команда global застосовується, аби змінна color існувала поза функцією, адже функція - це окрема частина програми, так би мовити підпрограма і всі внутрішні змінні не інують позв її межами.
Отже, от що ми маємо при запуску нашої програми.


Якщо у вас є бажання більше дізнатися про мову Python, придбайте посібник: proginschool.inf.ua

Немає коментарів:

Дописати коментар

Python і Sublime Text 3

Sublime Text — швидкий кросплатформенний редактор початкових текстів програм. Підтримує плагіни, розроблені за допомогою мови програмуванн...