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

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

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

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

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

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

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

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

window.configure(background = '#949494')

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Support the Blog!

Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️

PayPal Logo Donate via PayPal

Revolut Logo Donate via Revolut