Добавляем кнопки на Python при помощи модуля Tkinter - Хорошие советы

Добавляем кнопки на Python при помощи модуля Tkinter

Как создать окошко мы разбирались в предыдущей статье. Теперь же давайте добавим нашей заготовке больше элементов. Пусть это будут кнопки.

Напомним как создать окошко с надписью

Для начала конечно же подключение фреймворка и его модуля 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()

Спасибо за прочтение!

Понравилась статья? Поделиться с друзьями:
Хорошие советы
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: