Напишите класс кнопки button экземпляры которого будут измерять количество нажатий на кнопку объект
Перейти к содержимому

Напишите класс кнопки button экземпляры которого будут измерять количество нажатий на кнопку объект

  • автор:

Кнопка с подсчетом нажатий

Напишите класс кнопки Button, экземпляры которого будут измерять количество нажатий на кнопку-объект.

Метод click увеличивает количество нажатий, метод click_count возвращает число нажатий. Метод reset обнуляет количество нажатий.

Формат ввода
Каждый тест представляет собой код, в котором будет использоваться ваш класс. Файл c решением не обязательно называть solution.py, он будет переименован автоматически. Тест запускается с вашим классом, а его вывод сравнивается с правильным решением.

1 2 3 4 5 6 7 8 9 10 11 12
class Button: def __init__(self): self.clicks = 0 def click(self): self.clicks += 1 def reset(self): self.clicks = 0 def click_count(self): print(self.clicks)

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Создать кнопку с подсчетом нажатий
Создать кнопку. Количество нажатий специально созданной кнопки должно отображаться в специально.

Кнопка со счётчиком нажатий
Добрый день смотрел в интернете но ни нашел примера. Что для этого нужно? Или какие темы можно.

форма — кнопка с выводом нажатий
Создать форму, которая будет содержать кнопку, при нажатии на нее будет считать количество нажатий.

Регистрация: 21.03.2021
Сообщений: 1
Вам нужно вернуть переменную self.clicks. Вместо print(self.clicks), напишите return self.clicks
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Счетчик нажатий кнопки и удаление файла после 10-ти нажатий
Возникла такая проблема В программе необходимо скачать видео и после 10-ти просмотров удалить.

Как сделать что бы кнопка добавилась, а предыдущая кнопка не исчезла с страницы?
Как сделать что бы кнопка3 добавилась, а кнопка2 не исчезла с страницы? <?php if.

Как сделать что бы кнопка добавилась, а предыдущая кнопка не исчезла с страницы?
Добрый день. Есть кнопка1, которая добавляет кнопку2, следующая в свою очередь создает кнопку3.

В схеме есть кнопка и светодиод. Начальное состояние – кнопка не горит
В схеме есть кнопка и светодиод. Начальное состояние – кнопка не горит. 1. Нажатие кнопки в первый.

Как сделать так чтобы кнопка не выполняла действие пока не нажата другая кнопка?
как сделать так что бы кнопка не выполняла действие пока не нажата другая кнопка допустим у меня.

Не работает кнопка Ctrl + левая кнопка мыши в Excel
Не работает кнопка ctrl + левая кнопка мыши в excel.Не выделяются ячейки.Хотя на рабочем столе или.

VBulletin Кнопка Спасибо + кнопка репутация + сокрытие текста
Добрый день. Интересуют моды: 1. Кнопка спасибо 2. Кнопки изменения репутации, возможность.

Напишите класс кнопки button экземпляры которого будут измерять количество нажатий на кнопку объект

Одним из наиболее используемых компонентов в графических программах является кнопка. В tkinter кнопки представлены классом Button . Основные параметры виджета Button:

  • command : функция, которая вызывается при нажатии на кнопку
  • compund : устанавливает расположение картинки и текста относительно друг друга
  • cursor : курсор указателя мыши при наведении на метку
  • image : ссылка на изображение, которое отображается на метке
  • pading : отступы от границ вилжета до его текста
  • state : состояние кнопки
  • text : устанавливает текст метки
  • textvariable : устанавливает привязку к элементу StringVar
  • underline : указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
  • width : ширина виджета

Добавим в окно обычную кнопку из пакета ttk:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # стандартная кнопка btn = ttk.Button(text="Button") btn.pack() root.mainloop()

Для создания кнопки используется конструктор Button() . В этом конструкторе с помощью параметра text можно установить текст кнопки.

Чтобы разместить виджет в контейнере (главном окне), у него вызывается метод pack() . На ОС Windows мы получим следующую кнопку:

Кнопка в tkinter в Python

Конструктор Button определяет различные параметры, которые позволяют настроить поведение и внешний вид кнопки. Однако конкретный набор параметров зависит от того, используем ли мы кнопки из пакета tkinter или из пакета tkinter.ttk.

Обработка нажатия на кнопку

Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command , присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:

from tkinter import * from tkinter import ttk clicks = 0 def click_button(): global clicks clicks += 1 # изменяем текст на кнопке btn["text"] = f"Clicks " root = Tk() root.title("METANIT.COM") root.geometry("250x150") btn = ttk.Button(text="Click Me", command=click_button) btn.pack() root.mainloop()

Здесь в качестве обработчика нажатия устанавливается функция click_button. В этой функции изменяется глобальная переменная clicks, которая хранит число кликов. Кроме того, изменяем текст кнопки, чтобы визуально было видно сколько нажатий произведено. Таким образом, при каждом нажатии кнопки будет срабатывать функция click_button, и количество кликов будет увеличиваться:

Обработка нажатия кнопки в tkinter и Python

Отключение кнопки

Для ttk-кнопки мы можем установить отключенное состояние с помощью метода state() , передав ему значение «disabled». С такой кнопкой пользователь не сможет взаимодействовать:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") btn = ttk.Button(text="Click Me", state=["disabled"]) btn.pack() root.mainloop()

При этом в метод state мы можем передать набор состояний, поэтому значение «disabled» передается внутри списка.

Виджеты Button, Label, Entry

В этом уроке рассмотрим подробнее три наиболее простых и часто используемых виджета GUI – кнопку, метку и однострочное текстовое поле. В tkinter объекты этих элементов интерфейса порождаются соответственно от классов Button , Label и Entry .

Свойства и методы виджетов бывают относительно общими, характерными для многих типов, а также частными, зачастую встречающимися только у какого-то одного класса. В любом случае список настраиваемых свойств велик. В этом курсе мы будем рассматривать только ключевые свойства и методы классов пакета tkinter .

В Tkinter существует три способа конфигурирования свойств виджетов:

  • в момент создания объекта,
  • с помощью метода config , он же configure ,
  • путем обращения к свойству как к элементу словаря.

Button – кнопка

Самыми важными свойствами виджета класса Button являются text , с помощью которого устанавливается надпись на кнопке, и command для установки действия, то есть того, что будет происходить при нажатии на кнопку.

По умолчанию размер кнопки соответствует ширине и высоте текста, однако с помощью свойств width и height эти параметры можно изменить. Единицами измерения в данном случае являются знакоместа (количество символов).

Такие свойства как bg , fg , activebackground и activeforeground определяют соответственно цвет фона и текста, цвет фона и текста во время нажатия и установки курсора мыши над кнопкой.

from tkinter import * def change(): b1['text'] = "Изменено" b1['bg'] = '#000000' b1['fg'] = '#ffffff' b1['activebackground'] = '#555555' b1['activeforeground'] = '#ffffff' root = Tk() b1 = Button(text="Изменить", width=15, height=3) b1.config(command=change) b1.pack() root.mainloop()

Здесь значение свойства command устанавливается с помощью метода config . Однако можно было сделать и так: b1[‘command’] = change . Вот так будет выглядеть кнопка после запуска программы и после нажатия на нее:

Пример изменения свойств виджета-кнопки

Label – метка

Виджет Label просто отображает текст в окне и служит в основном для информационных целей (вывод сообщений, подпись других элементов интерфейса). Свойства метки во многом схожи с таковыми у кнопки. Однако у меток нет опции command . Поэтому связать их с событием можно только с помощью метода bind .

На примере объекта типа Label рассмотрим свойство font – шрифт.

from tkinter import * root = Tk() l1 = Label(text="Машинное обучение", font="Arial 32") l2 = Label(text="Распознавание образов", font=("Comic Sans MS", 24, "bold")) l1.config(bd=20, bg='#ffaaaa') l2.config(bd=20, bg='#aaffff') l1.pack() l2.pack() root.mainloop()

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

Также как font свойство bd есть не только у метки. С его помощью регулируется размер границ. Здесь единицей измерения является пиксель.

Конфигурирование свойств Label

Бывает, что метки и кнопки не присваивают переменным, если потом к ним в коде не приходится обращаться. Их создают от класса и сразу размещают:

from tkinter import * def take(): lab['text'] = "Выдано" root = Tk() Label(text="Пункт выдачи").pack() Button(text="Взять", command=take).pack() lab = Label(width=10, height=1) lab.pack() root.mainloop()

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

Entry – однострочное текстовое поле

Текстовые поля предназначены для ввода информации пользователем. Однако нередко также для вывода, если предполагается, что текст из них будет скопирован. Текстовые поля как элементы графического интерфейса бывают однострочными и многострочными. В tkinter вторым соответствует класс Text , который будет рассмотрен позже.

Свойства экземпляров Entry во многом схожи с двумя предыдущими виджетами. А вот методы – нет. Из текстового поля можно взять текст. За это действие отвечает метод get . В текстовое поле можно вставить текст методом insert . Также можно удалить текст методом delete .

Метод insert принимает позицию, в которую надо вставлять текст, и сам текст. Такой код

from tkinter import * from datetime import datetime as dt def insert_time(): t = dt.now().time() e1.insert(0, t.strftime('%H:%M:%S ')) root = Tk() e1 = Entry(width=50) but = Button(text="Время", command=insert_time) e1.pack() but.pack() root.mainloop()

приведет к тому, что после каждого нажатия на кнопку будет вставляться новое время перед уже существующей в поле строкой.

Метод insert объекта Entry

Если 0 в insert заменить на константу END , то вставляться будет в конец. Можно указать любое число-индекс знакоместа, тогда вставка будет производиться куда-либо в середину строки.

Метод delete принимает один или два аргумента. В первом случае удаляется один символ в указанной позиции. Во втором – срез между двумя указанными индексами, не включая последний. Если нужно полностью очистить поле, то первым аргументом должен быть 0, вторым – END .

Практическая работа

Напишите программу, состоящую из семи кнопок, цвета которых соответствуют цветам радуги. При нажатии на ту или иную кнопку в текстовое поле должен вставляться код цвета, а в метку – название цвета.

Коды цветов в шестнадцатеричной кодировке: #ff0000 – красный, #ff7d00 – оранжевый, #ffff00 – желтый, #00ff00 – зеленый, #007dff – голубой, #0000ff – синий, #7d00ff – фиолетовый.

Примерно должно получиться так:

Пример программы с текстовым полем и кнопками

Для выравнивания строки по центру в текстовом поле используется свойство justify со значением CENTER .

Курс с примерами решений практических работ: pdf-версия

X Скрыть Наверх

Tkinter. Программирование GUI на Python

Как в Python с помощью класса Button реализовать подсчет количество нажатий на кнопку?

Подскажите пытаюсь реализовать класс Button, объекты которого будут считать количество нажатий на кнопку. Метод click инкрементирует количество нажатий. Метод get_click_count возвращает число кликов, а метод reset обнуляет количество нажатий.

class Button: def __init__(self): self.clicks = 0 def click(self): self.clicks += 1 def reset(self): self.clicks = 0 def click_count(self): print(button.get_click_count())

Вывод должен быть равен: 1

  • Вопрос задан более года назад
  • 708 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 1

AlexNest

Александр Нестеров @AlexNest Куратор тега Python

Работаю с Python/Django

get_click_count ничего не возвращает. Он вообще не объявлен.
В остальном — непонятна проблема. Судя по коду, если конечно он ваш, вы умеете создавать и изменять поля класса, что значит что вы должны уметь и получать их значения — т.к. обычно примеры того, как это делать приводят в том-же тексте (глава книги/статья и т.д.), где описывают и создание с изменением.

Ответ написан более года назад

Комментировать

Нравится Комментировать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *