Tkinter - размер окна

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

Привет всем! Долго, очень долго доходили руки до написания этого материала. Сегодня мы разберемся с Tkinter — что это с примерами на русском. Попробуем создать небольшой интерфейс, ну и вообще… Поехали!

Сразу скажу, что рассказывать о крутости библиотеки — не буду. Она крутая, входит в комплект установщика Python, и позволяет создавать интерфейсы. Основная цель материала — эдакая шпаргалка по работе с Tkinter — что это с примерами 🙂

1. Создание окна на Tkinter:

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. window = Tk()
  4. window.title('Заголовок окна') #Обозначили заголовок окна
  5. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

Если все сделано правильно — у нас появится нечто вроде:
Tkinter - создать окно

UPD: а еще можно обозначить цвет фона окна. Выглядит этот код следующим образом:

  1. window.configure(background = '#949494')

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

  1. window.configure(width = 100, height = 100, background = '#000000') #Тут у меня вообще аналогия с HTML возникла :)

А вот еще интересный вариант:

  1. window.geometry('450x200+100+100') #Где первый параметр - ширина, а второй - высота, а третий и четвертый параметр, указанные через плюс - местонахождение создаваемого окна с координатами от левого верхнего угла ;)

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

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. window = Tk()
  4. window.title('Заголовок окна') #Обозначили заголовок окна
  5. label_widget = Label(window, text='Текст метки') #Создали виджет метки с текстом
  6. label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
  7. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

Опять же — если все сделано правильно — у нас откроется окно следующего вида:
Tkinter - добавить метку

3. Установка размера шрифта в окне Tkinter:
Ок, виджет метки мы добавили, а что делать, если размер шрифта «по-умолчанию» нас не устраивает? Нужно этот размер изменить. Для этого используем конструкцию в виде:

  1. label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48))

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

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. window = Tk()
  4. window.title('Заголовок окна') #Обозначили заголовок окна
  5. label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
  6. label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
  7. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

А само окно в этом виде будет выглядеть так:
Tkinter - размер шрифта

4. И кстати, раз мы теперь умеем устанавливать размер шрифта — почему бы сразу не разобраться с установкой размера окна? Делается это очень просто:

  1. window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.

Кстати! Если у вас есть цель сделать окно фиксированного размера, и отключить возможность изменения его размера — используйте:
window.resizable(0, 0)
— в этом случае у пользователя не будет никакой возможности корректировки размера созданного окна 🙂

В полном виде код будет выглядеть так:

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. window = Tk()
  4. window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
  5. window.title('Заголовок окна') #Обозначили заголовок окна
  6. label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
  7. label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
  8. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

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

5. А теперь давайте разберемся с вопросом: как добавить кнопку в Tkinter? Механизм создания кнопки сходен с созданием виджета метки. Конструкция выглядит следующим образом:

  1. button = Button(window, text='Нажми меня!') #Создали кнопку, обозначили текст на кнопке
  2. button.grid(column=1, row=0) #Добавили описание - где эта кнопка должна быть

В полном виде код будет выглядеть так:

  1. from tkinter import * #Подключили библиотеку
  2.  
  3. window = Tk()
  4. window.geometry('450x200') #Где первый параметр - ширина, а второй - высота.
  5. window.title('Заголовок окна') #Обозначили заголовок окна
  6. label_widget = Label(window, text='Текст метки', font=('Arial Bold', 48)) #Создали виджет метки с текстом
  7. label_widget.grid(column=0, row=0) #Добавили сетку. ВАЖНО: без сетки - виджет не появится :)
  8. button = Button(window, text='Нажми меня!') #Создали кнопку, обозначили текст на кнопке
  9. button.grid(column=1, row=0) #Добавили описание - где эта кнопка должна быть
  10.  
  11. window.mainloop() #Подключили функцию, создающую бесконечный цикл, который заставляет окно ждать любого действия пользователя. ВАЖНО: если мы забудем создать эту функцию - окно у нас так и не появится :)

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

Кстати, для примера давайте чуть скорректируем размер шрифта на кнопке — ну так, именно для тренировки (учиться-то нужно, правда?):

  1. button = Button(window, text='Нажми меня!', font=('Arial Bold', 48)) #Как видите - алгоритм работы со шрифтом полностью идентичен тому, что мы тестировали на виджете метки. Но это так - отступление :)

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

  1. button = Button(window, text='Нажми меня!', font=('Arial Bold', 12), width=15)

и в рабочем виде кнопка приобретает следующий вид:
Tkinter - добавить кнопку с отступом

6. В этом пункте мы узнаем, как задавать кнопке параметры цвета самой кнопки, и цвета текста. Для этого используем:

  1. button = Button(window, text='Нажми меня!', bg="orange", fg="red")

Думаю, каких-то особых пояснений не нужно — bg — цвет самой кнопки, fg — цвет букв на кнопке 🙂

7. А теперь, зная, как создавать и украшать кнопки — давайте добавим реакцию на клик. Для этого используем конструкцию:

  1. button = Button(window, text='Нажми меня!', bg="orange", fg="red", command=clicked)

Как видно из кода выше — мы создаем кнопку, прописываем ее внешний вид и текст на самой кнопке, а потом указываем, какую функцию нам нужно вызвать после нажатия кнопки. В нашем случае — эта функция clicked

Так давайте создадим функцию, которая нужным образом отработает после того, как эту функцию вызовет нажатие кнопки:

  1. def clicked():
  2.     label_widget.configure(text='Кнопка была нажата!')

Т.е. в поле метки виджета разместим новый текст 😉 Как видите — все просто:
До нажатия кнопки:
Tkinter - до нажатия кнопки

После нажатия кнопки:
Tkinter - после нажатия кнопки

На этом по вопросу, который звучит как Tkinter — что это — пока все 🙂 Продолжение завтра.
Спасибо!
В случае возникновения вопросов — пожалуйста, пишите на почту, или в Telegram.