четвер, 29 листопада 2018 р.

Практична робота 7 клас

                                            7 - Б, Г


1. Створіть на диску D:/ папку з назвою класу. В цій папці створіть папку із своїм прізвищем.
2. Запустіть Pathon . Створіть новий файл.
3. Використовуючи функції  input, print створіть наступні програми.
4. В вас має бути 4 файли з програмним кодом

№1
Дано сторони прямокутника a і b. Знайти його площу S=a·b і периметр P=2·(a+b).
№2
Дано діаметр кола d. Знайти його довжину L=π·d. В якості значення π використовувати 3,14.
№3
Дано довжину ребра куба a. Знайти об’єм куба V=a3і площу його поверхні S=6·a2.
№4
Дано довжини ребр a, b, c прямокутного паралелепіпеда. Знайти його об'єм V=a·b·c і площу поверхні S=2·(a·b+b·c+a·c).



7 - В
1. Создайте на диске D: / папку с названием класса. В этой папке создайте папку со своим именем.
2. Запустите Pathon. Создайте новый файл.
3. Используя функции input, print создайте следующие программы.
4. В вас должно быть 4 файлы с программным кодом

№1
Даны стороны прямоугольника a и b. Найти его площадь S = a · b и периметр P = 2 · (a + b).
№2
Даны диаметр круга d. Найти его длину L = π · d. В качестве значения π использовать 3,14.
№3
Дано длину ребра куба a. Найти объем куба V = a3и площадь его поверхности S = ​​6 · a2.
№4
Дано длиной ребра a, b, c прямоугольного параллелепипеда. Найти его объем V = a · b · c и площадь поверхности S = ​​2 · (a · b + b · c + a · c).

9 Б практична робота

1. Создайте 3 любые списки с целочисленными и дробными типами данных 
2. Найдите сумму всех элементов в каждом из списков и выведите на экран 
3. объединит все списки в один и присвойте это значение переменной 
4. Выведите на экран количество элементов, в списке образовавшегося 
5. Выведите на экран сумму всех элементов последнего списка
 6. Продемонстрируйте работу учителю

середу, 28 листопада 2018 р.

Домашнє завдання 7 клас


Об’єкти та змінні

В Python все - булеві значення, цілі числа, числа з плаваючою точкою, рядки, складні структури даних, функції - реалізовано як об’єкти.
Що таке об’єкт?
Об’єкт можна уявити як скриньку, у якій міститься фрагмент даних. Об’єкт має тип (наприклад, тип булевих значень або тип цілих чисел), який визначає, що можна зробити з цими даними.
У реальному світі скринька з написом «Книги» повідомляє нам інформацію, що в ній містяться книги (фрагменти даних), які ми можемо звідти дістати або покласти нові, але виключно книги.
Точно так само і в Python - якщо об’єкт має тип цілих чисел, ви знаєте, що зможете скласти його з іншим об’єктом, який має такий самий тип цілих чисел.
Тип також визначає, чи можна змінити значення, яке зберігається в скриньці (змінюване значення), або воно є константою (незмінне значення).
Об’єкт, значення якого неможливо змінити, можна порівняти із закритою скринькою з віконцем: ви можете побачити значення, але не можете змінити його. В рамках тієї ж аналогії, об’єкт, значення якого можна змінити, схожий на відкриту скриньку: ви не тільки можете побачити значення, яке там зберігається, а й змінити його, однак не можете змінити тип об’єкта (скриньки).
Мови програмування також дозволяють визначати змінні. Ви можете визначити їх для використання у своїй програмі.
В Python для присвоювання змінній певного значення використовується символ =.

У математиці символ = означає «дорівнює». У багатьох мовах програмування, включаючи Python, цей символ використовується для позначення «присвоювання».
У наступному фрагменті програми ціле число 12 присвоюється змінній з ім’ям a, потім на екран виводиться значення, пов’язане в поточний момент з цією змінною:
>>> a = 12 >>> a 12

В Python змінні - це просто імена. Присвоювання не копіює значення, воно прикріплює ім’я до об’єкта, який містить дані. Ім’я - це посилання на якийсь об’єкт, а не сам об’єкт. Ім’я можна розглядати як стікер-наклейку.
В Python, якщо ви хочете дізнатися тип якогось об’єкта (змінної або значення), вам слід використовувати конструкцію type(об’єкт). Спробуємо зробити це для різних значень (81, 99.99, ruby) і змінних (a, b):
>>> type(a) 'int'> >>> type(b) 'int'> >>> type(81) 'int'> >>> type(99.99) 'float'> >>> type('ruby') 'str'>

Клас - це визначення об’єкта. В Python значення термінів «клас» і «тип» приблизно однакові.
Необхідно дотримуватись певних вимог використання імен змінних. Імена змінних можуть містити тільки такі символи:
літери в нижньому регістрі (від «a» до «z»)
літери у верхньому регістрі (від «A» до «Z»)
цифри (від 0 до 9)
нижнє підкреслення (_)
Імена не можуть починатися з цифри.
Python особливо обробляє імена, які починаються із символа нижнього підкреслення.
Коректними є такі імена:
a a5 a_b_c_81 abc _3a
Наступні імена є некоректними:
2 2a 2_
Не слід використовувати наступні слова, для імен змінних, оскільки вони є зарезервованими словами Python:

   
False
class
finally
is
return
None
continue
for
lambda
try
True
def
from
nonlocal
while
and
del
global
not
with
as
elif
if
or
yield
assert
else
import
pass
break
Ці слова і деякі знаки пунктуації використовуються у синтаксисі мови Python.
Числа
Числа дуже часто застосовуються у програмуванні (ведення рахунку у грі, представлення даних на діаграмі, зберігання інформації у веб-додатках тощо). Числа використовуються у виразах (наприклад, 2 + 3), у яких виконують обчислення за допомогою математичних операторів (наприклад, +) над операндами (наприклад, 2, 3).
Таблиця "Математичні оператори та їх використання"
Оператор
Опис
Приклад
Результат
+
Додавання
5 + 7
12
-
Віднімання
55 - 10
45
*
Множення
4 * 6
24
/
Ділення
7 / 2
3.5
//
Цілочисельне ділення
7 // 2
3
%
Остача від ділення
7 % 3
1
**
Піднесення до степеня
3 ** 4
81
В Python числові дані поділяються на кілька категорій за способом їх використання.
 Цілі числа
Будь-яка послідовність цифр в Python вважається цілим числом:

Не потрібно ставити на початку числа 0, бо це викличе помилку некоректний символ.
>>> 10 10 >>> 05 File "<stdin>", line 1 05 ^ SyntaxError: invalid token
Послідовність цифр вказує на ціле число. Якщо ви поставите знак + перед цифрами, число залишиться незмінним:
>>> 132 132 >>> +132 132
Щоб вказати на від’ємне число, поставте перед цифрами знак -:
>>> -321 -321
За допомогою Python можна виконувати арифметичні дії як зі звичайним калькулятором:
>>> 25 + 9 34 >>> 145 - 37 108 >>> 8 + 3 - 2 + 1 - 106 -96 >>> 6 * 7 42
Операції ділення існує два види. За допомогою оператора / виконується ділення з плаваючою точкою(десяткове ділення). Навіть, якщо ви ділите ціле число на ціле число, оператор / дасть результат з плаваючою точкою:
>>> 9 / 5 1.8
Цілочисельне ділення за допомогою оператора // дає цілочисельну відповідь, відкидаючи залишок:
>>> 9 // 5 1
Ділення на нуль з допомогою будь-якого оператора викличе помилку:
>>> 6 / 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
>>> 8 // 0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero
Використаємо в обчисленнях змінні та змінимо їх значення:
>>> a = 42
>>> a = a - 2
>>> a 40

В Python вираз, який стоїть справа від знака присвоювання =, обчислюється в першу чергу, запам’ятовується результат обчислення і тільки потім результат обчислення присвоюється змінній, яка стоїть з лівої сторони.
Арифметичні оператори можуть використовуватися разом із оператором присвоювання, розміщуючи їх перед символом присвоювання:
>>> a = 95
>>> a -= 3
>>> a 92
>>> a += 8
>>> a 100
>>> a *= 2 >>> a 200
>>> a /= 3 >>> a 66.66666666666667
Аналогічно виразу a = a - 3.
Аналогічно виразу a = a + 8.
Аналогічно виразу a = a * 2.
Аналогічно виразу a = a / 3.
За допомогою символу %, коли він знаходиться між двома числами, обчислюється остача від ділення першого числа на друге:
>>> 23 % 6 5
Перетворення типів: функція int()
Для того, щоб змінити інші типи даних на цілочисельний тип, слід використовувати функцію int().

Функція int() зберігає цілу частину числа і відкидає будь-який залишок.
Найпростіший тип даних в Python - булеві змінні, значеннями цього типу можуть бути тільки True або False. При перетворенні в цілі числа вони набувають значень 1 і 0:
>>> int(True) 1 >>> int(False) 0
Перетворення числа з плаваючою точкою в ціле число просто відсікає все, що знаходиться після десяткової точки:
>>> int(98.6) 98 >>> int(1.5e4) 15000
Розглянемо приклад перетворення текстового рядка, який містить тільки цифри або цифри і знаки + і -:
>>> int('99') 99 >>> int('-23') -23 >>> int('+12') 12
Якщо ви спробуєте перетворити щось не подібне на число, згенерується помилка:
>>> int('22 abc') Traceback (most recent call last): File "<stdin>",
line 1, in <module> ValueError: invalid literal for int() with base 10: '22 abc'
Пріоритет операторів
Для ознайомлення з таблицею пріоритетів операторів Python перейдіть на сайт з документацією.
Для встановлення пріоритетів виконання операторів можна також скористатися дужками:
>>> 7 * (3 + 4) 49
Числа з плаваючою точкою
В Python числа, що мають дробову частину, називаються дійсними (або «числами з плаваючою точкою»). Числа з плаваючою точкою обробляються так само, як і цілі: можна використовувати оператори +, -, *, /, //, **, %.
Перетворення типів: функція float()
Для того щоб перетворити інші типи в тип float (так називають дійсні числа в Python), cлід використовувати функцію float().

Функція float() перетворює значення інших типів у значення з плаваючою точкою.
Булеві значення обробляються як невеликі числа:
>>> float(True) 1.0 >>> float(False) 0.0
Перетворення значення типу int в тип float:
>>> float(98) 98.0
Ви також можете перетворювати рядки, що містять символи, які є коректним числами (цілими або з плаваючою точкою):
>>> float('99') 99.0 >>> float ('98.6') 98.6 >>> float ('-1.5') -1.5
>>> float ('1.0e4') 10000.0
 Математичні функції
Python має багато математичних функцій стандартної бібліотеки math. Щоб отримати до них доступ зі своїх програм, необхідно ввести import math.
Ця бібліотека містить такі константи, як pi (число Пі) і e (експонента):
>>> import math >>> math.pi 3.141592653589793 >>> math.e 2.718281828459045
Розглянемо кілька корисних функцій бібліотеки math:
>>> math.fabs(-221.1) 221.1
>>> math.floor(56.8) 56
>>> math.ceil(38.3) 39 >>> math.factorial(7) 5040
>>> math.pow(4, 3) 64.0
>>> math.sqrt(256) 16.0
>>> math.radians(180) 3.141592653589793
>>> math.degrees(math.pi) 180.0
Повертає абсолютне значення.
Округлення вниз.
Округлення вгору.
Обчислення факторіалу.
Піднесення числа до степеня.
Обчислення кореня квадратного з числа.
Перетворення значення в градусах у радіани.
Перетворення значення в радіанах у градусну міру.  
В цій бібліотеці також присутні тригонометричні функції: sin(), cos(), tan(), asin(), acos(), atan().


Tkinter




Бібліотека (модуль) Tkinter. Клас Tk 
 у версіях, починаючи з Python 3.0, бібліотека має назву tkinter (з малої літери).

 Перш ніж створити своє перше вікно, треба підключити бібліотеку (модуль).
Це робиться вже звичним для нас чином:
from Tkinter import *
Далі треба створити головне об'єкт головного вікна. Це робиться за допомогою класу Tk. Назвемо це вікно root.
root = Tk()
Наприкінці програми необхідно для нашого головного вікна root використати метод mainloop(), який говорить приблизно наступне: «ОК, я завершив роботу з настройки і тепер готовий до прийому та обробки подій».
root.mainloop()
Метод mainloop() забезпечує постійну роботу головного вікна і його об'єктів до моменту, коли воно буде закрито.

Остаточно найпростіша програма створення головного вікна виглядатиме так:
from Tkinter import *
root = Tk()
root.mainloop()

Збережемо її під іменем tk01.py. Результатом виконання цієї програми є
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/004.gif

Нічого вам не нагадує? Наприклад, вікно, в якому «повзала» черепашка. І назва така ж: «tk». Її можна змінити, для цього треба використати метод title(), всередині якого вказати власний заголовок, не забуваючи, що це текст, який потрібно взяти у одинарні лапки. Програма tk02.py  виглядатиме наступним чином:
from Tkinter import *
root = Tk()
root.title('My favourite title')
root.mainloop()
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/005.gif
Але, якщо пам'ятаєте, черепашка рухалася по білому екрану, та й розміри його були іншими. За ці та деякі інші параметри відповідає метод config()
root.config(background='steelblue', relief=RAISED, borderwidth=10)
Розглянемо можливі параметри вікна. Почнемо зі знайомих
height, width - розміри вікна
background(bg) - колір фону вікна
Але є і інші параметри, наприклад,
relief - вид рамки вікна. Може приймати значення

FLAT
(плоска рамка)
SUNKEN (увігнута рамка)
RAISED
(опукла рамка)
GROOVE
(у вигляді жолобу)
RIDGE
(у вигляді хребта)
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/007.gif
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/008.gif
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/009.gif
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/010.gif
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/011.gif
Ширину рамки можна також задати, для цього використовуємо borderwidth. По замовчуванню цей параметр дорівнює 0.
root.title('My favourite title')
root.mainloop()

Наприклад,
from Tkinter import *
root=Tk()

root.config(width=600, height=400, background='steelblue', borderwidth=10, relief=RAISED)

root.title('My favourite title')
root.mainloop()

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/006.gif
Параметри background та borderwidth  можна писати і скорочено як bg  та  bd відповідно. Наприклад, як у наступній програмі
from Tkinter import *
root = Tk()
root.config(bg="steelblue", relief=RAISED, bd=10)
root.title("My title")
root.mainloop()

Бібліотека Tkinter. Клас Label

У вікні можна розміщувати різні об'єкти. Наприклад, для розміщення тексту у вікні використаємо клас Label (з англ. ярлик).
Створимо конкретний об'єкт цього класу з іменем label
label = Label(root, text='Hello, world!')
У дужках необхідно вказати, у якому вікні буде розташований текст і який саме текст. Тому першою опцією є ім'я створеного вікна root, другий параметр text приймає значення  'Hello, world!'.
До об'єкту label треба застосувати метод pack()
label.pack()
!  Якщо цей метод не використати, текст у вікні не буде відображеним (не з'явиться).
Наступна програма tk04.py
from Tkinter import *
root = Tk()
root.title('My favourite title')
label = Label(root, text='Hello, world!')
label.pack()
root.mainloop()

створює вікно

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/012.gif

!  Зверніть увагу, що коли розміри вікна явно не задані, вікно стискується до розмірів об'єктів, що на йому розташовані.
Але текст написаний чорним кольором і маленьким шрифтом. Виявляється, існують параметри, які дозволяють це змінити.
label = Label(root, text="Hello, world!", fg="red", font="Times")
label.pack()

Ви вже здогадалися, що параметр fg задає колір текстуа параметр font задає тип шрифту.

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/014.gif

Якщо font прийме значення Ariel, то текст у вікні буде виглядати так:

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/013.gif

Програма в цілому буде виглядати так:
from Tkinter import *
root = Tk()
root.title('My favourite title')
label = Label(root, text="Hello, world!", fg="red", font="Ariel")
label.pack()
root.mainloop()

При зміні розмірів вікна за допомогою миші відбувається наступне:
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/015.gif
Для того, щоб текст розташовувався у всьому доступному просторі вікна можна використати опцію expand зі значенням 1 для метода pack. Створимо ще один текст у вікні:
from Tkinter import *
root=Tk()
label=Label(root, text='Hello, world!', fg='red', font='Ariel')
label.pack()
label2=Label(root, text='My name is Ivan', fg='blue', font='Times')
label2.pack(expand=1)
root.title('My favourite title')
root.mainloop()

Після запуску отримаємо вікно:
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/017.gif
Але при зміні розмірів вікна текст My name is Ivan буде займати положення посередині доступного простору (доступний простір визначається розмірами вікна після розміщення першого тексту):
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/018.gif

Якщо і до тексту Hello, world! застосувати опцію expand=1, то отримаємо:
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/019.gif
Вивчаючи HTML, ви взнали як змінювати розмір тексту, робити його напівжирним, курсивом, підкресленим. У бібліотеці Tkinter також передбачені такі параметри:
label2 = Label(root, text='My name is Ivan', fg='blue',
               font=('Comic Sans', 25, 'bold italic underline'),
               bg='green', width=20, height=10, relief=RAISED, bd=8)

Розглянемо по частинах:
fg='blue'   - задає колір тексту;
font=('Comic Sans', 25, 'bold italic underline')   -  параметри текста, а саме: Шрифт - Comic Sans, розмір - 25, bold - напівжирний, italic - курсив, underline - підкреслений;
bg='green'  -  колір фону мітки;
width=20, height=10 - відповідно ширину і довжину, але не у пікселях, а у символах;
relief=RAISED, bd=8  - вже знайомі тип і товжина рамки.

Остаточно отримуємо програму
from Tkinter import *
root = Tk()
root.title('My favourite title')
label1 = Label(root, text='Hello, world!')
label1.pack()

label2 = Label(root, text='My name is Ivan', fg='blue',
               font=('Comic Sans', 25, 'bold italic underline'),
               bg='green', width=20, height=10, relief=RAISED, bd=8)

label2.pack()
root.mainloop()
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/020.gif

Для того, щоб до кінця зрозуміти, що означає фраза «ширина і довжина у символах» поставимо ці параметри рівні width=3, height=4. Після запуску зміненої програми отримаємо:
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/021.gif



Практична робота 
1.  Створіть пурпурове вікно з назвою «My name is» з рамкою за смаком та товщиною 20 пікселів.
2.  Розмістіть у ньому три тексти: на червоному тлі – Ваше прізвище, на жовтому – ім’я, на зеленому – по батькові. Не забудьте змінити колір, розмір та формат шрифту.
3.  Змініть розміри текстів так, щоб вони були однакового розміру. Задайте вид рамки та товщину кожного тексту.
4. Змініть властивості текстів так, щоб при розтягуванні вікна тексти займали положення посередині.
5. Допишіть програму так, щоб вона створювала ЩЕ й друге вікно з назвою "I study in ... ". Розташуйте у ньому текст з вказівкою класу, у якому навчаєтесь. Задайте колір, розмір та вид рамки на власний смак.
https://disted.edu.vn.ua/media/images/porkhun/inf_8_2012_2013/tkinter_tk_label.jpg
 Бібліотека Tkinter. Клас Canvas
Цей клас застосовується для відображення діаграм, многокутників та інших типів графічних елементів. Ми будемо використовувати клас Canvas для створення полотна для малювання.

Спочатку створюємо головне вікно, у якому і розміщуємо полотно для малювання:
from Tkinter import *
root=Tk()
root.title('Windows for drawing')
canvas=Canvas(root)
canvas.pack()
root.mainloop()

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/022.gif

На цьому  полотні є система координат, але на відміну від вікна turtle, початок координат знаходиться завжди у лівому верхньому куті, додатня частина осі х спрямована звичайним чином вправо, а от додатня частина вісі y спрямована донизу (!).  Тобто у вікні видно лише першу координатну чверть - частина фігури, що не потрапляє у цю чверть просто не відображається.
https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/023.gif
Які ж фігури можна розташувати на полотні?
Для розміщення на полотні прямокутника і овалу застосуємо методи create_rectangle та create_oval.
Прямокутник задається координатами двох несусідніх вершин, наприклад, лівого верхнього та правого нижнього кутів.
canvas.create_rectangle(10, 10, 100, 200)
Якщо ці ж самі координати точок застосувати у методі create_oval
canvas.create_oval(10, 10, 100, 200)
то отримаємо таке вікно:

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/024.gif

Звідси можна зробити висновок, що при створенні овалу задається прямокутна область, у яку вписується овал. Ця область задається координатами двох несусідніх вершин.

У методах create_rectangle та create_oval  є однакові параметри:
fill відповідає за заливку фігури,
outline та width задають  колір та  ширину межі фігури.

Наступна програма малює червоний прямокутник з блакитною межею шириною 10 пікселів та жовтий овал із зеленою межею шириною 2 пікселі:
from Tkinter import *
root = Tk()
root.title('Window for drawing')
canvas = Canvas(root, bg='steelblue')
canvas.pack()
canvas.create_rectangle(10, 10, 100, 200, fill='red', outline='blue',width=10)
canvas.create_oval(150, 150, 160, 160, fill='yellow',  outline='green',width=2)
root.mainloop()

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/025.gif


Завдання:
1. Намалювати 5 квадратів по діагоналі з використанням Tkinter.
2. Намалювати світлофор з використанням Tkinter.

Клас Button (створення кнопок у вікні)

Створимо вікно з двома кнопками, що будуть розташовуватися одна під одною.
from Tkinter import *
root = Tk()
b1 = Button(root, text='My first button!')
b1.pack()
b2 = Button(root, text='Second!')
b2.pack()
root.mainloop()

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/030.gif

!     Якщо розміри кнопки не задані, то вони визначаються текстом на ній.
Ускладнимо завдання: Нехай при натисненні на першу кнопку видається повідомлення "Hello!".
По-перше, подія пов'язана з кнопкою, тому кнопка має містити атрибут, що обробляє цю подію. Цей атрибут носить назвуcommand. Яке ж може бути його значення? Яка нам знайома структура виконується лише тоді, коли ми її викликаємо? Це функція. Напишемо функцію, яка виводить дане повідомлення. Потім значенням атрибуту command поставимо ім'я функції. Вона буде викликатися лише при натисненні на кнопку.
from Tkinter import *
def hello():
    print 'Hello!'
root = Tk()
b1 = Button(root, text='My first button!', command=hello)
b1.pack()
root.mainloop()

Текст 'Hello!' виводиться не у нашому вікні, а у вікні Python Shell.
Результат запуску програми і п'яти натискувань кнопки:



https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/031.gif

Розгляньте ще один приклад, у якому при натисненні на першу кнопку виводиться "Hello!", друга кнопка дозволяє обрахувати суму двох чисел.
from Tkinter import *
def hello():
    print 'Hello!'
def sum():
    print 'Find the sum of two numbers a and b.'
    a = input('vvedi a: ')
    b = input('vvedi b: ')
    print a, '+' , b, '=', a+b
root = Tk()
b1 = Button(root, text='My first button!', command=hello)
b1.pack()
b2 = Button(root, text='Second button!', command=sum)
b2.pack()
root.mainloop()

Результат запуску програми і натискування спочатку на першу, потім на другу кнопку (при цьому вводяться два числа і виводиться результат), і  три рази на першу кнопку:

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/032.gif

Використаємо бібліотеку turtle для опрацювання натиснення на третю кнопку. Нехай при цьому в окремому вікні малюється n-кутник.

!  При підключенні модуля turtle повинен обов'язково йти перед модулем Tkinter, бо вікно turtle написане за допомогою Tkinter.
from turtle import *
from Tkinter import *
def hello():
    print 'Hello!'
def sum():
    print 'Find the sum of two numbers a and b.'
    a = input('vvedi a: ')
    b = input('vvedi b: ')
    print a, '+' , b, '=', a+b
def line():
    n = input("vvedi kilkist storin bagatokutnika: ")
    i = 1
    while i <= n:
        forward(20)
        left(360/n)
        i = i+1
root = Tk()
b1 = Button(root, text="My first button!", command=hello)
b1.pack()
b2 = Button(root, text="Second button", command=sum)
b2.pack()
b3 = Button(root, text="Use turtle", command=line)
b3.pack()
root.mainloop()

Результат послідовного натискування на першу, другу (введення двох чисел, виведення результату) і третю кнопки (введення кількості сторін):

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/033.gif


Завдання:
Створіть вікно з 4-ма кнопками однакового розміру. При натисненні на першу у вікні turtle черепашка малює червоний квадрат,  при натисненні на другу - черепашка малює зелений трикутник, третя кнопка дозволяє черепашці намалювати жовтий круг, четверта - пурпуровий шестикутник.



Створення кнопок очищення та закриття

Напишемо програму, яка створює вікно з полотном і кнопкою, при натисненні на яку з'являється довільний прямокутник довільного кольору.
Підключаємо бібліотеки Tkinter і whrandom.
from Tkinter import *
from whrandom import *
Зрозуміло, що треба написати функцію, що розташовує на полотні довільний прямокутник. Такий прямокутник ми вже створювали, лише треба виділити цю частину програми у вигляді функції.
def new_rectangle():
Визначимо координати несусідніх вершин прямокутника наступним чином:
         x1 = randint(0, 400)
         y1 = randint(0, 200)
         x2 = randint(0, 400)
         y2 = randint(0, 200)
Задамо колір. Його значення складемо у rgb-форматі. Відтінок червоного буде випадковим числом в межах від 0 до 255, тобто одним з 256 значень.
         red = randint(0, 255)
Аналогічно визначимо значення
         green = randint(0, 255)
         blue = randint(0, 255)
!      З трьох значень ми формуємо одне, використовуючи формат
          c = "#%02x%02x%02x" % (red, green, blue)
Колір, як і в HTML, береться у лапки, починається знаком дієза # і записується шестизначним шістнадцятковим числом.
Тут %x  означає подання числа у шістнадцятковій системі числення. Цифри 02 перед х визначають, що число має бути дворозрядним (двоцифровим). Якщо навіть якась компонента дорівнює, наприклад 11, то цей формат перетворить її на 0b,  а не просто у b.
Далі створюємо відповідний прямокутник
            canvas.create_rectangle(x1, y1, x2, y2, fill=c)
Тіло функції завершилось. Всі інші стрічки програми будуть йти без відступу.
Треба:
1. створити вікно розмірами 400х200, саме таких максимальних значень можуть набирати координати вершин прямокутника;
2. розмістити на ньому полотно для малювання під назвою canvas - саме таке ім'я застосовується у функції;
3. кнопку, при натискові на яку викликається написана функція new_rectangle.

Спробуйте самостійно дописати програму і перевірити її роботу.
Подамо результат виконання цієї програми після декількох натискувань кнопки.

https://disted.edu.vn.ua/media/images/porkhun/inf_8/l59_64/034.gif


Додамо до цієї програми частину коду, що створить ще дві кнопки: одна - очищує полотно, друга - закриває вікно.
Для очищення полотна напишемо функцію з іменем clear_all. У ній до полотна canvas застосуємо метод delete з параметром all:
def clear_all():
         canvas.delete("all")
Назвемо кнопку clear_button, на ній буде розміщено текст ‘Clean canvas!'при натискові буде викликатися функція clear_all.
Спробуйте самостійно написати створення такої кнопки, не забудьте застосувати метод, який розташує кнопку у вікні.

Є метод destroy, який ніби знищує об'єкт. Ми хочемо застосувати його для вікна root, отже у коді програми буде   
root.destroy()
Цей метод повинен виконатися при натисненні на кнопку. Нехай на кнопці буде написано "QUIT".

Спробуйте самостійно написати створення такої кнопки. Перевірте, чи працює ваша програма.



Завдання:
Напишіть програму, яка створює вікно з полотном, на якому вже розташовано по центру круг радіуса 50,  і трьома кнопками:
при натискуванні на першу - очищується полотно;
на другу -  зникає полотно для малювання;
третя - закривається вікно.