Как создать окошко мы разбирались в предыдущей статье. Теперь же давайте добавим нашей заготовке больше элементов. Пусть это будут кнопки.
Содержание:
Напомним как создать окошко с надписью
Для начала конечно же подключение фреймворка и его модуля ttk:
from tkinter import *
from tkinter import ttk
А вот и сам код окна с текстом на нем:
panel = Tk()
panel.title("Привет мир!")
panel.geometry("600x400")
panel.resizable(True, True)
text = ttk.Label(text="Привет мир!", font=("Arial", 30))
text.pack(anchor='n')
panel.mainloop()
Я переименовала названия переменных, чтобы было понятно, что название может быть какое угодно.
Не забудем добавить адаптацию к русскому языку в начало кода:
# -*- coding: cp1251 -*-
Добавляем кнопку
Для того чтобы добавить кнопку, искользуем класс Button из подключенного нами пакета ttk:
batn1 = ttk.Button(text="И тебе привет!", command=points_button)
Параметр text задает текст «И тебе привет!» который будет отображаться на кнопке.
Параметр command добавит функцию, вызываемую при нажатии на кнопку.
Давайте расположим нашу кнопку сразу же после текста и растянем её, при помощи параметров anchor и fill:
batn1.pack(anchor='center', fill=X)
А теперь возвращаемся к параметру command!
Добавляем функцию при нажатии
Для того, чтобы сделать нашу кнопку кликабельной, нам понадобится написать нашу первую настоящую функцию для неё.
Используем функцию def:
points = 0
def points_button():
global points
points += 1
batn1["text"] = f"Нажатий: {points}"
Функция def задает некоторую последовательность действий, с возвратом некоторого значения.
Ключевое слово global будет считать количество кликов для переменной, которую я назвала points, указанной выше. Следующая строчка добавляет клики. Можно обойтись и без этого кусочка, однако я решила добавить этот небольшой элемент для наглядности.
И наконец, в последней строке, мы, используя параметр переменной batn1 «text» задаем надпись на нашей кнопке.
Таким образом, при клике на кнопку, надпись «И тебе привет!» сменится на текст «Нажатий: x«, где x — это число кликов по кнопке.
Отключенная кнопка
Давайте попробуем добавить кнопку, на которую невозможно было бы нажать. Это очень просто, достаточно импользовать метод state и указать его в числе параметров для виджета:
batn2 = ttk.Button(text="Не нажимать", state=["disabled"])
Разместим вторую кнопку сразу после первой:
batn2.pack(anchor='s', fill=X)
В итоге, при использовании значения disabled для метода state, наша кнопка будет помечена серым цветом и недоступна дла взаимодействия.
Этот метод удобно использовать в тех случаях, где по каким либо причинам нужно ограничить взаимодействие человека с виджетом.
Итоговый код
Вот такой код в итоге у нас должен получиться:
# -*- coding: cp1251 -*-
from tkinter import *
from tkinter import ttk
points = 0
def points_button():
global points
points += 1
batn1["text"] = f"Нажатий: {clicks}"
panel = Tk()
panel.title("Привет мир!")
panel.geometry("600x400")
panel.resizable(True, True)
text = ttk.Label(text="Привет мир!", font=("Arial", 30))
text.pack(anchor='n')
batn1 = ttk.Button(text="И тебе привет!", command=points_button)
batn1.pack(anchor='center', fill=X)
batn2 = ttk.Button(text="Не нажимать", state=["disabled"])
batn2.pack(anchor='s', fill=X)
panel.mainloop()
Спасибо за прочтение!