Tkinter — что это с примерами на русском — часть 2

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

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

  1. text_widget = Entry(window,width=10)

Важно — не забываем добавлять координаты для нахождения виджета — без них он показываться не будет. Т.е. в полном виде наш код будет выглядеть так:

  1. text_widget = Entry(window,width=10)
  2. text_widget.grid(column=2, row=0)

А вообще наш код к текущему моменту выглядит следующим образом (не забывайте читать комментарии к коду — там все понятно вроде как):

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. def clicked(): #Функция реакции на нажатие кнопки 'Нажми меня!'
  4.     label_widget.configure(text='Кнопка была нажата!')
  5.  
  6. def exit(): #Функция реакции на нажатие кнопки 'Exit'
  7.     print('Завершение программы')
  8.     quit()
  9.  
  10. window = Tk()
  11. window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
  12. window.resizable(0, 0)  #Используем этот код, если нам нужно отключить возможность изменения размеров окна пользователем
  13. window.title('Заголовок окна') #Обозначили заголовок окна
  14.  
  15. label_widget = Label(window, text='Текст метки', font=('Arial Bold', 12)) #Создали виджет метки с текстом
  16. label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
  17.  
  18. #button = Button(window, text='Нажми меня!') #Создали кнопку, обозначили текст на кнопке
  19. button = Button(window, text='Нажми меня!', bg="orange", fg="red", command=clicked) #Кнопка с указанными свойствами цвета текста на кнопке и самой кнопки
  20. button.grid(column=1, row=0) #Указание координат местоположения кнопки
  21.  
  22. button_exit = Button(window, text = 'Exit', bg = 'red', command = exit) #Кнопка закрытия приложения
  23. button_exit.grid(column=0, row=1) #Указание координат местоположения кнопки
  24.  
  25. text_widget = Entry(window,width=20) #Создали виджет для ввода информации
  26. text_widget.grid(column=2, row=0) #Указали координаты местоположения виджета
  27.  
  28. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

Визуально наше приложение выглядит следующим образом:
Tkinter - виджет для ввода информации

2. Окно создали… теперь давайте разберемся, как получить данные из этого окна. Для этого нам понадобиться конструкция:

  1. text_widget.get() #т.е. берем данные из окна

Саму конструкцию добавляем в функцию, которая отвечает за реакцию по клику на кнопку. В полном виде код приобретает следующий вид:

  1. def clicked(): #Создаем функцию, отвечающую за реакцию на клик кнопки
  2.     result = 'Мы ввели в поле текст:' + text_widget.get() #Создали переменную, содержащую общий текст + текст, который введен в поле для ввода информации
  3.     label_widget.configure(text=result) #Меняем значение текстового виджета

Визуально все выглядит следующим образом:
До нажатия на кнопку:
Tkinter - виджет для ввода информации - до нажатия на кнопку

После нажатия на кнопку:
Tkinter - виджет для ввода информации - после нажатия на кнопку

3. Кстати, имеется встроенная возможность установить курсор в нужное поле сразу, по-умолчанию. Для этого используем:

  1. text_widget.focus()

Как видите — очень просто, и крайне эффективно 😉

4. Иногда нужно деактивировать виджет, но оставить его в приложении. Для этого используется следующая конструкция:

  1. text_widget = Entry(window,width=10, state='disabled')

Т.е. виджет у нас есть, он полностью прописан — но не активен. Выглядит это следующим образом:
Tkinter - виджет для ввода информации - не активен

5. Создание виджета выпадающего списка с помощью Tkinter. Для этого нам нужно подключить дополнительный модуль из библиотеки Tkinter:

  1. from tkinter.ttk import *

А теперь создадим выпадающий список:

  1. list_down = Combobox(window) #Создали выпадающий список, указали - где он будет вообще
  2. list_down['values']= (1, 2, 3, 4, 5, "Text") #Указали значения, которые будут в выпадающем списке
  3. list_down.current(4) #set the selected item #Указали значение "По-умолчанию" - важно не забывать, что отсчет в Python идет с нуля ;) т.е. в данном случае значением "по-умолчанию" будет цифра 5.  
  4. list_down.grid(column=0, row=0) #Указали местоположение выпадающего списка

Визуально выпадающий список выглядит следующим образом:
Tkinter - выпадающий список

И да — что бы получить значение, которое было выбрано из выпадающего списка — используем конструкцию:

  1. list_down.get()

На сегодня по вопросу «Tkinter — что это» — достаточно 🙂
Завтра, надеюсь, закончим краткое знакомство с этой библиотекой. Впереди знакомство с методикой создания радио-кнопок, чек-боксов, окон уведомлений, и многое другое 😉 Подпишитесь на мой канал в Telegram!

Вопрос? Пишите на почту 🙂