Тема 34(8): Елементи для введення даних: прапорці.
План вивчення теми:
Прапорці та їх властивості
Використання прапорців
Д/з: опрацювати:
§6.9
веб-сторінку уроку 34(8)
Прапорці - це керуючі елементи, що використовують для введення даних під час реалізації алгоритмів з розгалуженням
Прапорець використовують у програмі там, де потрібно вмикати або вимикати певний режим, параметр тощо. При цьому кожна позначка встановлюється або знімається незалежно від стану інших прапорців. Тобто можна встановити одночасно декілька прапорців, а також зняти всі.
Розміщення прапорця у вікні проекту:
Створити змінну логічного типу, щоб мати можливість дізнаватися під час виконання проєкту стан прапорця (вибраний або невибраний)
<ім’я змінної> = BooleanVar()
Пов’язати цю змінну з прапорцем під час створення даного прапорця командою Checkbutton:
<ім’я прапорця> = Checkbutton(text = ‘<текст підпису>’, variable = <ім’я змінної>)
Розмістити створений об’єкт у вікні, викриставши метод pack() або place()
Наприклад:
choice = BooleanVar()
flag = Checkbutton(text = ‘Ваш вибір’, variable = choice)
flag.pack()
Зауваження*:
Якщо в проєкті використовується кілька прапорців, то для кожного з них повинна бути створена окрема змінна.
Оскільки під час виконання проєкту жодного прапорця може бути не вибрано, то доцільно для кожного з них залишити значення false властивості Checked ( значення логічної змінної), яке встановлюється за замовчуванням.
Властивості прапорця:
text=”текст” – текст кнопки;
fg=”колір” – колір тексту кнопки;
font=”шрифт та розмір шрифту” – висота шрифту тексту кнопки;
bg=”колір” – колір кнопки (значенням може бути назва кольору англійською);
width=число – ширина кнопки (кількість символів, які можуть бути розміщені поруч по горизонталі);
height=число – висота кнопки (кількість символів, які можуть бути розміщені один під одним по вертикалі);
padx=число - відступ від границі до вмісту по горизонталі;
pady=число - відступ від границі до вмісту по вертикалі;
Методи, що використовуються для об’єкта прапорець:
<ім’я змінної>.set(True) - команда застосовується щоб одразу після запуску проєкту прапорець був у стані вибраний (англ. set – установити),
Наприклад choice.set(True).
<ім’я змінної>.get() - використовується щоб під час виконання проєкту визначити значення змінної пов'язаної з прапорцем
Наприклад choice.get(). Значення цієї змінної можна використовувати в проєктах у команді розгалуження.
pack() - розташування прапорця нижче попередньо створеного об'єкта з однаковими відступами від лівої та правої меж вікна.
Якщо потрібно розмістити кнопку з деяким відступом від рядка заголовка або попереднього об'єкта, то в дужках можна указати цей відступ у пікселях як значення властивості pady.
Наприклад, flag.pack(pady=20) - кнопку буде розміщено з відступом 20 пікселів від верхньої межі або попередньої кнопки.
place(x=<відступ від лівої межі вікна>,y=<відступ від верхньої межі вікна>) - вказує точне місцезнаходження прапорця, верхня ліва вершина прапорця розміщується в точці вікна із заданими координатами х та у.
Наприклад, flag.place(x=200,y=100) - верхня ліва вершина прапорця буде розміщена у точці з координатами (200, 100).
#Код-шаблон
from tkinter import*
#підпрограма (процедура) для опрацювання даних
def click():
#
#
#
#створення вікна програми розміром 300на200 пікселів
root=Tk()
root.geometry("300x250")
#створення та налаштування поля №1 для введення x
e1=Entry()
e1.pack(pady=10)
#створення та налаштування поля №2 для введення y
e2=Entry()
e2.pack(pady=10)
#створення та налаштування напису №1 для виведення z
lab1=Label()
lab1.pack(pady=10)
#створення та налаштування кнопки №1 для запуску процедури
b1=Button(text='Виконати', command=click)
b1.pack(pady=10)
Увага! Під час роботи з комп'ютером дотримуйтеся вимог БДЖ та санітарно-гігієнічних норм.
Завдання 1:
Розмістимо у вікні 3 прапорці і створимо процедуру для опрацювання події Click для кнопки. До тіла функції btn_click() додамо три послідовні команди розгалуження для перевірки стану прапорців. У кожній із цих команд, незалежно одна від одної, буде визначатися, вибрано відповідний прапорець чи ні. І залежно від цього, у кожній з них будуть чи не будуть змінюватися значення відповідних властивостей вікна.
from tkinter import *
def click():
if cvar1.get(): root.title('Заголовок змінений')
if cvar2.get(): root['bg']='red'
if cvar3.get(): root.geometry('500x200')
root=Tk()
root.geometry("300x250")
cvar1 = BooleanVar()
c1 = Checkbutton(text="Заголовок", font = 'Arial 12',variable=cvar1)
c1.pack(pady=10)
#c1.place(x = 10, y = 10)
cvar2 = BooleanVar()
c2 = Checkbutton(text="Колір", font = 'Arial 12',variable=cvar2)
c2.pack(pady=10)
#c2.place(x = 10, y = 40)
cvar3 = BooleanVar()
c3 = Checkbutton(text="Розміри", font = 'Arial 12',variable=cvar3)
c3.pack(pady=10)
#c3.place(x = 10, y = 70)
btn = Button(text = 'Змінити',font = 'Arial 12',command = click)
btn.pack(pady=10)
#btn.place(x = 50, y = 100)
Завдання 2. Створити проєкт, у якому можна обчислити суму, різницю, добуток, частку від ділення двох довільних чисел залежно від установлених позначок прапорців. Забезпечте введення даних у об'єкти типу "Поле", а виведення результатів у - "Написи".
Завдання 3. Робітниця протягом місяця виготовила х деталей, за кожну з яких вона отримує у грн. Якщо в робітниці є діти, вона отримує додаткову плату в розмірі 20 % від суми, заробленої за місяць. Якщо робітниця виготовить браковані деталі, то її зароблена сума за місяць буде зменшена на 15 %. Побудуйте математичну модель і створіть проєкт, який визначає суму грошей, яку заробить робітниця за місяць.