ДАЮ 60 БАЛЛОВ ЗДЕЛАЙТЕ!!!
Завдання. Створити вікно, у якому можна перевести долари чи євро у гривні.
1. Імпортуй графічну бібліотеку tkinter.
from tkinter import *
2. Створи головне вікно root та розмісти команду для відображення вікна після
запуску програми.
root = Tk() # створення головного вікна (завжди називай головне вікно root!)
# команди
root.mainloop() # команда відображення вікна при запуску
3. Встанови розмір вікна 250*130.
root.geometry("250x130")
4. Задай заголовок вікна «Конвертер»
root.title("Конвертер")
5. Задай та розмісти текст «Виберіть валюту».
currency = Label(root, text="Виберіть валюту")
currency.grid(row=0, column=0, sticky='w')
6. Постав два перемикача – віджети Radiobutton – з підписати «долар» та
«євро». Назви́
змінні dollar та euro.
dollar = Radiobutton(root, text="долар")
dollar.grid(row=0, column=1)
euro = Radiobutton(root, text="євро")
euro.grid(row=1, column=1)
7. По замовчуванню ці перемикачі не пов’язані один з одним і обидва
увімкнені. Щоб змінити це, потрібно перед Radiobutton визначити спільну
змінну цілого типу currencyVal, через яку установимо зв’язок між
перемикачами. За допомогою метода set() встановимо значення 25 – курс
долара.
currencyVal = IntVar()
currencyVal.set(25)
8. Використай властивості перемикача – variable та value:
✓ value – значення, яке буде присвоюватися змінній, вказаній у параметрі
variable (у нашому випадку 25 для долара та 30 для євро);
✓ variable – ім’я змінної, у якої буде змінюватись значення на вказане у
властивості value (у нашому випадку це змінна currencyVal).
dollar = Radiobutton(root, ___, variable=currencyVal, value=25)
euro = Radiobutton(___, text="євро", variable=currencyVal, value=30)
9. Розмісти текст «Курс» (віджет Label; змінну назви́
rate).
rate = Label(root, text="Курс")
rate.grid(row=2, column=0, sticky='w')
10. При виборі Radiobutton «долар» діля слова «Курс» повинен появитись курс
валют 25, при виборі «євро» – 30. Для цього виконай такі дії:
• Розмісти праворуч від слова «Курс» значення курсу долара, яке буде
відображатись по замовчуванню (віджет Label; змінну назви́
rate_value).
rate_value = Label(root, text="25")
rate_value.grid(row=2, column=1, sticky='w')
• Перед Radiobutton створи функцію currency_check(), яка змінюватиме
значення змінної rate_value на обраний курс. Використай метод config, щоб
змінити конфігурацію віджета.
def currency_check():
rate_value.config(text=currencyVal.get())
# метод config для зміни конфігурації віджета
• Доповни! параметри перемикачів властивістю command – команда, яка
виконується після активації віджета (у нашому випадку після активації
відповідного перемикача повинна виконатись функція currency_check()).
dollar = Radiobutton(root,
text="долар",
variable=currencyVal,
value=25,
command=currency_check)
euro = Radiobutton(root,
text="євро",
variable=currencyVal,
value=30,
command=currency_check)
11. Поставити текст «Введіть суму у валюті» (змінна suma).
suma = Label(root, text="Введіть суму у валюті")
suma.grid(row=3, column=0, sticky='w')
12. Поставити текстове поле (змінна suma_entry).
suma_entry = Entry(root)
suma_entry.grid(row=3, column=1, sticky='w')
13. За замовчуванням у текстовому полі відобрази значення суми 0. Використай
метод insert.
suma_entry.insert(1, "0")
14. Постав кнопку «Конвертувати» (змінна convert).
convert = Button(root, text="Конвертувати")
convert.grid(row=4, column=0, sticky='w')
15. Конвертуй валюти у гривні та результат запиши у пусту мітку label. Для
цього виконай такі дії:
• Створи та розмісти пусту мітку label.
label = Label(root, text="")
label.grid(row=4, column=1, sticky='w')
• Помнож значення курсу валют, яке міститься у змінній currencyVal, на
введену у текстове поле suma_entry суму та відобрази результат у пустій
мітці label. Для цього створи функцію calculate, яка виконуватиме дію
множення та змінюватиме параметр text мітки label.
def calculate(event):
label.config(text=currencyVal.get() * int(suma_entry.get()))
• Прив’яжи цю подію до дії «Натиснута ліва кнопка миші» на створену вище
кнопку (використай метод bind).
# метод bind прив'язує подію до будь-якої дії
convert.bind(" ", calculate) # - натиснута ліва кнопка миші
Answers & Comments
Вроді нічого не пропустив:
from tkinter import *
root = Tk()
root.geometry("250x130")
root.title("Конвертер")
currency = Label(root, text="Виберіть валюту")
currency.grid(row=0, column=0, sticky='w')
currencyVal = IntVar()
currencyVal.set(25)
dollar = Radiobutton(root, text="долар", variable=currencyVal, value=25)
dollar.grid(row=0, column=1)
euro = Radiobutton(root, text="євро", variable=currencyVal, value=30)
euro.grid(row=1, column=1)
rate = Label(root, text="Курс")
rate.grid(row=2, column=0, sticky='w')
rate_value = Label(root, text="25")
rate_value.grid(row=2, column=1, sticky='w')
def currency_check():
rate_value.config(text=currencyVal.get())
dollar.config(command=currency_check)
euro.config(command=currency_check)
suma = Label(root, text="Введіть суму у валюті")
suma.grid(row=3, column=0, sticky='w')
suma_entry = Entry(root)
suma_entry.grid(row=3, column=1, sticky='w')
suma_entry.insert(1, "0")
label = Label(root, text="")
label.grid(row=4, column=1, sticky='w')
def calculate(event):
label.config(text=currencyVal.get() * int(suma_entry.get()))
convert = Button(root, text="Конвертувати")
convert.grid(row=4, column=0, sticky='w')
convert.bind("<Button-1>", calculate)
root.mainloop()