Найти тему
programmer's notes (python and more)

Программирование на языке Python. Библиотека tkinter, окно и кнопка (Button)

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Библиотека tkinter | programmer's notes (python and more) | Дзен
Приложения на основе библиотеки PyQt на Python | programmer's notes (python and more) | Дзен
Базовый курс программирования на Python | programmer's notes (python and more) | Дзен

Окно с кнопкой выхода (Button) на tkinter

Сегодня я продолжу материал предыдущей статьи, в которой я начал говорить о библиотеке tkinter. Библиотека интересная, для не слишком больших оконных приложений вполне себе подойдёт.

Сегодня мы поговорим о кнопках в окне. Как они описываются и обрабатывается нажатие кнопок.

Ниже представлена простая программа, создающая окном кнопкой выхода.

#!/usr/bin/python3
import tkinter as tk
wn = tk.Tk()
wn.geometry("450x450+700+700")
wn.title("Окно с кнопкой")
bt = tk.Button(wn, text="Exit", command=wn.destroy)
bt.pack(pady=20)
wn.mainloop()

Результа выполнения см. на рисунке 1.

Рисунок 1. Окно с кнопкой выхода
Рисунок 1. Окно с кнопкой выхода

В программе выше нет ничего сложного. Как мы видим, при создании кнопки: tk.Button() указывается объект-окно, где кнопка будет расположена, надпись на кнопке (text='Exit') и обработчик её нажатия. В данном случае это уже определённый метож destroy() окна, он его удаляет при этом происходит выход из программф. Интересен метод pack(), он указаывает на расположение кнопки, а также на особенности самой кнопки. Ниже на остановлюсь на этом методе более подробно.

Программа практически с той же функциональностью, но с несколько иным подходом представлена ниже. Созданное программой окно представлено на рисунке 3.

Рисунок 2. Программа окно с кнопокй ис использованием наследования из библиотеки tkinter. Текст программы см. ниже по ссылке
Рисунок 2. Программа окно с кнопокй ис использованием наследования из библиотеки tkinter. Текст программы см. ниже по ссылке
primer349.py

Сделаем некоторые пояснения к программе на рисунке 2.

  • На это раз мы поступили в согласии с принципами ООП. Создали класс win,как произодный от класса tk.TK. Соответственно все настройки окна производятся в конструкторе __init__(). Напомню, что как и раньше, строка super().__init__() обращается к конструктору класса родителя и это обязательно. Замечу также, что метод, заканчивающий работу приложения (закрывающий окно) теперь выделен нами явно в методе класса win. Так более понятно.
  • Но вот на методе pack() (Button.pack()) следует остановиться особо. Опишем именованные параметры этого метода: 1. expand, если параметр равен True, то кнопка по середине окна. 2. fill определяет заполнение кнопкой пространства окна (контейнера): None - элемент не растягивается, tk.X - растягивается по x, tk.Y - растягивается по Y, tk.BOTH - растягивается и по x и по y. 3. side - выравнивание по одной из сторон окна: tk.TOP - выравнивает по верхней стороне окна (по умолчанию), tk.BOTTOM - выравнивает по нижней стороне, tk.LEFT - выравнивает по левой стороне, tk.RIGHT - выравнивает по правой стороне. 4. padx - устанавливает отступ по x. 5. pady - устанавливает отступ по y. 6. ipadx - указывает отступ внутри кнопки сторон от текста по оси x. 7. ipady - указывает отступ внутри кнопки сторон от текста по оси y. 8. anchor - помещает кнопку в одно из мест окна: "n" - вверху по центру, "e" - в правой части по центру, "s" - внизу по центру, "w" - в левой части по центру, "nw" - в левом верхнем углу, "ne" - в правом верхнем углу, "se" - в правом нижнем углу, "sw" - в левом нижнем, "center" - по центру.

Замечание
Даже уже из описания параметров очевидно, что некоторые параметры могут противоречить друг другу. Поэтому следует просто поэкпериментировать с ними. Заметим также, что положение кнопки не меняется при изменении размеров окна.

Рисунок 3. Окно снопкой от программы см. Рисунок 2.
Рисунок 3. Окно снопкой от программы см. Рисунок 2.

Пока всё! Продолжение следует...

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

Кнопки создавать это вам не лобио кушать
Кнопки создавать это вам не лобио кушать