Перемикачі. Клас Radiobutton

 Об'єкт (віджет) Radiobutton – клас перемикачів (радіокнопок).

Для того, щоб створити об'єкт Перемикач застосуємо команди:

rb1 = Radiobutton(root, text='Перемикач 1!')

rb1.pack()

В першому рядку ми створюємо змінну rb1 класу Radiobutton(). В дужках вказано назву вікна, в якому вікні розміщений перемикач та властивість text (напис на перемикачі). Наступний рядок дає команду показати перемикач.

Приклад1. Створити вікно програми з трьома перемикачами Перемикач 1, Перемикач 2, Перемикач3

from tkinter import * root = Tk() root.config(bg='steelblue') rb1 = Radiobutton(root, text='Перемикач 1') rb1.pack() rb2 = Radiobutton(root, text='Перемикач 2') rb2.pack() rb3 = Radiobutton(root, text='Перемикач 3') rb3.pack() root.mainloop()

Ці перемикачі ніяк не пов'язані один з одним. Крім того для них не вказано вихідне значення, чи повинні вони бути в стані "вкл" або "викл". За замовчуванням вони включені.

Для того, щоб об'єднати всі перемикачі в одну групу створюють загальну змінну для них. Зв'язок встановлюється через загальну змінну, різні значення якої відповідають включенню різних радіокнопок групи. У всіх кнопок однієї групи властивість variable встановлюється в одне і те ж значення - пов'язану з групою змінну. А властивості value присвоюються різні значення цієї змінної.


У Tkinter не можна використовувати будь-яку змінну для зберігання станів віджетів. Для цих цілей передбачені спеціальні класи-змінні пакета tkinter - BooleanVar, IntVar, DoubleVar, StringVar. Перший клас дозволяє приймати своїм екземпляри тільки булеві значення (0 або 1 і True або False), другий - цілі, третій - дробові, четвертий - рядкові (текстові).

var=IntVar()

rb1 = Radiobutton(root, text='Перемикач 2', variable=var, value=1)


Методи класу Radiobutton:

pack()-показати

get()- взяти дані з перемикача

set() - встановлює початкове значення перемикача

place(x=10, y=50)- визначає місце об'єкта у вікні


Властивості (атрибути) класу Radiobutton:

text- встановлює текст перемикача

font- шрифт

variable- змінна групи перемикачів

value- значення

command- дія при кліку

Методи у Python записуються наступним чином:

Спочатку вказуємо змінну(об'єкт), до якої застосовуємо метод, далі вказуємо ім'я методу і дужки. А в дужках вказуємо параметри, якщо вони потрібні.

Radiobutton.place(x=10, y=50)

Функції у Python записуються наступним чином:

rb1 = Radiobutton(root, text='Перемикач 2', variable=var, value=1)


Отже, перемикачі ми навчилися створювати і об'єднувати їх в групи, але коли клікаємо на них, то нічого не відбувається. Далі потрібно запрограмувати кнопку на виконання якоїсь дії. За дію відповідає властивість command, що дорівнює якійсь функції, запрограмованій раніше. Тобто, спочатку створюємо функцію дії над кнопкою, а далі властивості command надаємо назву цієї функції . Можна також запрограмувати звичайне клікання на об'єкті, на полі вікна, наведення вказівника миші чи інше.


Приклад 2. Створити вікно з трьома перемикачами для вибору кольору і кнопку "Вибрати". Після того, як колір обрано, запрограмувати кнопку так, що при натисненні на неї повинна з'явитись мітка з текстом "Наш колір", і кольором обраного перемикача.

Вказівка. Якщо у вікні потрібно розмістити більше, ніж 3 перемикачі, доцільно скористатися циклом for.

from tkinter import *

def col(): if var.get()==1: lab1['bg']='red' elif var.get()==2: lab1['bg']='green' elif var.get()==3: lab1['bg']='yellow' root = Tk() var=IntVar() # створюємо змінну, яка приймає цілі значення var.set(1) # встановлюємо перше значення для створеної змінної rb1 = Radiobutton(text='Червоний', variable=var, value=1) rb2 = Radiobutton(text='Зелений', variable=var, value=2) rb3 = Radiobutton(text='Жовтий', variable=var, value=3) b1=Button(text="Вибрати", command=col) lab1=Label(text="Наш колір",width=20,height=10) rb1.pack() rb2.pack() rb3.pack() b1.pack() lab1.pack() root.mainloop()

Якщо ми хочемо створити декілька груп перемикачів, то для кожної групи потрібно створити окрему змінну.

Приклад 3. Створити вікно з двома групами перемикачів: для вибору класу та паралелі класу. і кнопку "Вибрати". Запрограмувати кнопку так, що при натисненні на неї повинні з'явитись мітки з текстом класу і паралелі

Скористатися методом grid() для вирівнювання об'єктів у вікні.

from tkinter import *

def col(): if var.get()==1: lab1['text']=' 8' elif var.get()==2: lab1['text']=' 9' elif var.get()==3: lab1['text']=' 10' if var1.get()==1:

lab2['text']='А' elif var1.get()==2: lab2['text']='Б' elif var1.get()==3: lab2['text']='В' root = Tk() root.config(bg='steelblue') root.geometry("200x125") var=IntVar() var.set(1) var1=IntVar() var1.set(1) rb1 = Radiobutton(text='8', bg='steelblue',variable=var, value=1) rb2 = Radiobutton(text='9', bg='steelblue',variable=var, value=2) rb3 = Radiobutton(text='10', bg='steelblue',variable=var, value=3) b1=Button(text="Вибрати", command=col) lab1=Label(width=2,bg='steelblue',height=1) lab2=Label(width=2,bg='steelblue',height=1) rb4 = Radiobutton(text='А', bg='steelblue',variable=var1, value=1) rb5 = Radiobutton(text='Б', bg='steelblue',variable=var1, value=2) rb6 = Radiobutton(text='В', bg='steelblue',variable=var1, value=3) rb1.grid(row=1, column=0) rb2.grid(row=2, column=0) rb3.grid(row=3, column=0) rb4.grid(row=1, column=1) rb5.grid(row=2, column=1) rb6.grid(row=3, column=1) b1.grid(row=4, column=0) lab1.grid(row=5, column=0) lab2.grid(row=5, column=1)

root.mainloop()

Завдання. Створити вікно з 4 перемикачами для вибору кольору та кнопку "Вибрати колір". Після того, як колір обрано, при натисненні на кнопку повинна з'явитись мітка з текстом де названий вибраний колір і текст кольору має бути такий, як в обраного перемикача.

Додакково: створити ще одну групу з 2 перемикачів, де можна вибрати колір заливки (кольори на ваш смак). Створіть та запрограмуйте ще одну кнопку в цьому ж вікні для вибору заливки "Вибрати заливку"




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

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