Статья Автор: Омарбек Нұр-Мұхаммед

4 урок. Radio и Check button

Добавление виджета Checkbutton (чекбокса)

С целью создания виджета checkbutton, используйте класс Checkbutton:

from tkinter.ttk import Checkbutton


chk = Checkbutton(window, text='Выбрать')

Кроме того, вы можете задать значение по умолчанию, передав его в параметр var в Checkbutton:

from tkinter import *  
from tkinter.ttk import Checkbutton  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
chk_state = BooleanVar()  
chk_state.set(True)  # задайте проверку состояния чекбокса  
chk = Checkbutton(window, text='Выбрать', var=chk_state)  
chk.grid(column=0, row=0)  
window.mainloop()

Посмотрите на результат:
Обучение Python GUI (уроки по Tkinter)

Установка состояния Checkbutton

Здесь мы создаем переменную типа BooleanVar, которая не является стандартной переменной Python, это переменная Tkinter, затем передаем ее классу Checkbutton, чтобы установить состояние чекбокса как True в приведенном выше примере.

Вы можете установить для BooleanVar значение false, что бы чекбокс не был отмечен.
Так же, используйте IntVar вместо BooleanVar и установите значения 0 и 1.

chk_state = IntVar()
chk_state.set(0) # False
chk_state.set(1) # True

Эти примеры дают тот же результат, что и BooleanVar.

Добавление виджетов Radio Button

Чтобы добавить radio кнопки, используйте класс RadioButton:

 
 
 
rad1 = Radiobutton(window,text='Первый', value=1)

Обратите внимание, что вы должны установить value для каждой radio кнопки с уникальным значением, иначе они не будут работать.

from tkinter import *  
from tkinter.ttk import Radiobutton  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
rad1 = Radiobutton(window, text='Первый', value=1)  
rad2 = Radiobutton(window, text='Второй', value=2)  
rad3 = Radiobutton(window, text='Третий', value=3)  
rad1.grid(column=0, row=0)  
rad2.grid(column=1, row=0)  
rad3.grid(column=2, row=0)  
window.mainloop()

Результатом вышеприведенного кода будет следующий:
Обучение Python GUI (уроки по Tkinter)Кроме того, вы можете задать command любой из этих кнопок для определенной функции. Если пользователь нажимает на такую кнопку, она запустит код функции.
Вот пример:

rad1 = Radiobutton(window,text='Первая', value=1, command=clicked)

def clicked():
    # Делайте, что нужно

Достаточно легко!

Получение значения Radio Button (Избранная Radio Button)

Чтобы получить текущую выбранную radio кнопку или ее значение, вы можете передать параметр переменной и получить его значение.

from tkinter import *  
from tkinter.ttk import Radiobutton  
  
  
def clicked():  
    lbl.configure(text=selected.get())  
  
  
window = Tk()  
window.title("Добро пожаловать в приложение PythonRu")  
window.geometry('400x250')  
selected = IntVar()  
rad1 = Radiobutton(window,text='Первый', value=1, variable=selected)  
rad2 = Radiobutton(window,text='Второй', value=2, variable=selected)  
rad3 = Radiobutton(window,text='Третий', value=3, variable=selected)  
btn = Button(window, text="Клик", command=clicked)  
lbl = Label(window)  
rad1.grid(column=0, row=0)  
rad2.grid(column=1, row=0)  
rad3.grid(column=2, row=0)  
btn.grid(column=3, row=0)  
lbl.grid(column=0, row=1)  
window.mainloop()

Обучение Python GUI (уроки по Tkinter)
Каждый раз, когда вы выбираете radio button, значение переменной будет изменено на значение кнопки.


1. Параметры проживания (Radiobuttons)

Пользователь должен выбрать категорию номера. Группа переключателей должна быть связана с одной переменной room_price_var.

  • Эконом: 20000 тенге/сутки

  • Стандарт: 45000 тенге/сутки

  • Люкс: 65000 тенге/сутки

  • Требование: При запуске программы по умолчанию должен быть выбран тип «Стандарт».

2. Срок аренды (Combobox)

Выбор количества ночей должен осуществляться через выпадающий список ttk.Combobox.

  • Диапазон: от 1 до 7 дней.

  • Ограничение: Запретить ручной ввод в поле списка (параметр state="readonly").

  • Требование: Значение «1» должно стоять в поле по умолчанию.

3. Дополнительные услуги (Checkbuttons)

Пользователь может выбрать любое количество дополнительных опций. Каждая опция имеет фиксированную стоимость, которая прибавляется к общему итогу один раз (не умножается на количество дней).

  • Завтрак: +5000 тг

  • Трансфер: +15000 тг

  • Поздний выезд: +10000 тг

4. Алгоритм расчета (Логика)

Расчет производится при нажатии на кнопку «Рассчитать общую стоимость». Математическая модель:

Общая стоимость = Цена x День + Доп.услуги

5. Вывод результата

  • Детализация должна включать: выбранный тип номера, количество дней и финальную сумму.

Печать