Вікна в Python

 В Python можна створювати проекти з вікнами. Для цього потрібно під'єднати модуль tkinter наступною командою:

from tkinter import*

Далі ми надаємо назву вікну:

root = Tk()

По замовчуванню, це вікно має розмір 200x200.

Задаємо заголовок вікна:

root.title('текст заголовка вікна')

Зміна розмірів вікна:

root.geometry('600x400+200+100')

Ширина вікна - 600, висота 400, відстань від лівої межі екрану 200 до вікна, відстань від верхньої межі екрану - 100 до вікна.

Якщо задати root.geometry('+300+400') то розміри вікна залишаться такими ж, а відстані від лівої і верхньої межі екрана зміняться.

Задати колір фону вікна:

root['bg'] = 'red'

Приклад першого проекту:


from tkinter import* root = Tk() root.title('текст заголовка вікна') root.geometry('300x100+200+100') root['bg'] = 'pink'

Завдання з підручника Ривкінд Інформатика 8 клас, 2021, с.160.
Завдання 1. Створіть проект, виконання якого відкриє вікно червоного кольору з розмірами 400х350 пікселів і змінить текст у рядку заголовка на ваше прізвище.
from tkinter import* root = Tk() root.title('Прізвище') root.geometry('400x350') root['bg'] = 'red'

Завдання 2. Створіть проект, виконання якого відкриє вікно синього кольору з розмірами 200х450 пікселів і змінить текст у рядку заголовка на ваше ім'я.

from tkinter import* root = Tk() root.title("Ім'я") root.geometry('200x450') root['bg'] = 'blue'

Завдання 3. Створіть проект, виконання якого відкриє вікно синього кольору з розмірами 300х300 пікселів, ліва межа якого розміщена на відстані 300 пікселів від лівої межі екрана, і 400 від верхньої межі екрана.

from tkinter import* root = Tk() root.geometry('300x300+300+400') root['bg'] = 'blue'

Завдання 4. Створіть проект, виконання якого відкриє вікно сірого кольору з розмірами 200х100 пікселів, ліва межа якого розміщена на відстані 150 пікселів від лівої межі екрана, і 100 від верхньої межі екрана.

from tkinter import* root = Tk() root.geometry('200x100+150+100') root['bg'] = 'grey'

Події. Обробники подій.
При виконанні проектів можна виконувати декілька подій:
Click - подія клік, коли ми клікаємо мишкою по вікну
DblClick - подвійний клік мишею по вікну
Close - закрити вікно
Create - створити або відкрити вікно
MouseMove - переміщення вказівника миші у вікні виконання проєкту.
KeyPress - натиснення будь-якої клавіші на клавіатурі
Позначення подій у мові Python
Подія Click позначаємо: <Button-1> або <1>
Подія DblClick позначаємо: <DoubleButton-1> або <Double-1>
Подія MouseMove позначаємо: <Motion>
Подія KeyPress позначаємо: <KeyPress>
Подія Create позначаємо: <Expose>
Подія Close позначаємо: <FocusOut>

Перший рядок обробника подій називають рядком заголовка, і позначають так:
def click (event):
define - визначати, event - подія.
Команди обробника подій, якщо правильно записувати, зміщуються вправо, якщо ми встановили знак ":".
Під час використання події, обробник події повинен містити команди змінення значень його властивостей.
Наприклад при настанні події клік зміняться розміри вікна, колір фону вікна, назва вікна.
Структура таких змін:
ім'я об'єкта ['властивість'] = значення
Наприклад, зміна кольору фону вікна: root['bg'] = 'pink'
Обробник події записують перед його використанням, на початку проєкту.
Після обробника події записують команди створення вікна.
Пов'язують подію з обробником подій за допомогою команди:
root.bind('<1>', click)
Де <1> - це в нас позначення події Click, а click - це назва нашої події.
Приклад використання події:
from tkinter import*
def click (event):
root.geometry('500x400')
root['bg'] = 'blue'
root.title('Ми змінюємо властивості вікна')
root = Tk()
root.bind('<1>', click)
В даному прикладі подія клік змінить розміри вікна, встановить синій колір фону і змінить назву вікна.
Початкове вікно, по замовчуванню 200х200:

Після кліку на вікно:

Іноді потрібно під час опрацювання події встановити нове значення властивості об'єкта, що встановлюється на основі поточного значення. Наприклад, потрібно щоб вікно опустилось на 100 пікселів. Тобто потрібно збільшити відстань від верхньої межі екрану.
Для отримання поточних значень розмірів і положення вікна використовують команди:
winfo_width()
winfo_height()
winfo_x()
winfo_y()
Для того щоб дізнатись верхню межу екрану та змінити її використовуємо команду:
t = root.winfo_y() + 100
Щоб встановити нове значення:
root.geometry('300x200 +200 + {}'.format(t))
Приклад:
Створити проект, в якому після настання події клік вікно опуститься на 50 пікселів вниз, а ширина збільшиться на 100 пікселів.
from tkinter import* def click (event): t = root.winfo_y() + 50 w = root.winfo_width() + 100 root.geometry('{}x200+200+{}'.format(w,t)) root = Tk() root.geometry('200x200+200+200') root['bg'] = 'pink' root.title('Ми збільшуємо вікно та опускаємо його вниз') root.bind('<1>', click)
Збільшити розміри вікна та опустити вниз
Якщо ми кілька разів клікнемо мишею то вікно кожного разу буде збільшуватись на 100 пікселів та опускатись вниз на 50 пікселів.
Замість невідомих параметрів розмірів ми вставляємо {}, а в методі format перераховуємо змінні через кому.
Вікна повідомлень
Для виведення на екран текстового повідомлення в Python використовують вікна повідомлень.
Вікна повідомлень Python бувають трьох видів:
Інформаційне вікно із текстовим повідомленням
showinfo('Текст в заголовку','текст повідомлення')
Вікно попередження із текстом попередження
showwarning('Текст в заголовку','текст повідомлення')
Вікно повідомлення про помилку
showerror('Текст в заголовку','текст повідомлення')
Для відкриття вікна з заданим текстом потрібно імпортувати модуль tkinter.messagebox.
Приклад використання вікна повідомлень:
from tkinter import* from tkinter.messagebox import* def click (event): showinfo('Подія','Це вікно повідомлень') root = Tk() root.geometry('200x200+200+250') root['bg'] = 'green' root.bind('<1>', click)

Вікно повідомлень

Приклади с. 172
Завдання 3. Створіть проєкт, в якому при настанні події Click для вікна встановляться розміри 400х300 пікселів, синій колір фону і зміниться текст заголовка на назву вашого населеного пункту.

from tkinter import*
def click (event):
root.geometry('400x300')
root['bg'] = 'blue'
root.title('Назва населеного пункту')
root = Tk()
root.bind('<1>', click)

Завдання 4. Створіть проєкт, в якому при настанні події KeyPress для вікна встановляться розміри 300х200 пікселів, червоний колір фону і зміниться текст заголовка на ваше прізвище.

from tkinter import*
def keypress (event):
root.geometry('300x200')
root['bg'] = 'red'
root.title('Прізвише')
root = Tk()
root.bind('<KeyPress>', keypress)

Для перевірки проекту натискаємо будь-яку клавішу на клавіатурі.
Завдання 5. Створіть проєкт, в якому при настанні події DblClick для вікна зміниться колір фону на вибраний вами, текст заголовка на вибраний вами, і збільшиться на 200 пікселів відступ верхньої межі вікна від верхньої межі екрана.

from tkinter import* def dblclick (event):
root['bg'] = 'lime'
root.title('Я вказую свої параметри') t = root.winfo_y() + 200 root.geometry('200x200+200+{}'.format(t)) root = Tk() root.geometry('200x200+200+200') root.bind('<Double-1>', dblclick)

Завдання 6. Створіть проєкт, в якому при настанні події Create(Expose) зміниться розміри вікна, колір фону, і зменшиться на 100 пікселів відступ його лівої межі від лівої межі екрана.

from tkinter import* def create (event): root['bg'] = 'pink' t = root.winfo_x() + 100 root.geometry('300x300+{}+200'.format(t)) root.title('Це нове створене вікно') root = Tk() root.geometry('200x200+100+200') root.bind('<Expose>', create)

Завдання 7. Створіть проєкт, в якому при настанні події Click для вікна встановляться розміри 500 на 500, коричневий колір фону і зміниться текст заголовка на Проєкт з двома процедурами, а в результаті настання події MouseMove відкриється вікно повідомлень з текстом Я громадянин України!

from tkinter import*
from tkinter.messagebox import* def click (event):
root.geometry('500x500')
root['bg'] = 'brown'
root.title('Проєкт з двома процедурами')
root = Tk()
root.bind('<1>', click)
Це перша частина проєкту

from tkinter import*
from tkinter.messagebox import*
def mousemove (event):
showinfo('Повідомлення', 'Я громадянин України')
root = Tk()
root.bind('<Motion>', mousemove)
Друга частина проекту.
Разом в одному проекті вони не працюють.

Завдання 8. Створіть проєкт, в якому при настанні події Close(FocusOut) для вікна відкриється вікно повідомлень з текстом Виконання проєкту закінчено. До побачення!

from tkinter import*
from tkinter.messagebox import*
def close (event):
showinfo('Повідомлення', 'Виконання проєкту закінчено. До побачення!')
root = Tk()
root.bind('<FocusOut>', close )

Цей проєкт хоч і виконується, але повідомлення не дає.

Завдання 8. Створіть проєкт, в якому при настанні події Click для вікна відкриється вікно повідомлень у яке буде виведено текст заголовка вікна.

from tkinter import* from tkinter.messagebox import* def click (event): t= root.title('Заголовок вікна') showinfo('Повідомлення', 'Заголовок вікна') root = Tk() root.bind('<1>', click )



Коментарі