##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capítulo 13/13.04 - Adicionando contadores.py
##############################################################################
import tkinter as tk
from tkinter import ttk
class Contador(ttk.Frame):
def __init__(self, numero, *args, **kwargs):
super().__init__(*args, **kwargs)
self.contador = 0
self.numero = numero
self.label = ttk.Label(
self, text=self.formata_contador(self.numero, self.contador)
)
self.label.pack()
self.botao = ttk.Button(
self, text=f"Adiciona ao contador {self.numero}", command=self.conta
)
self.botao.pack()
self.pack()
def formata_contador(self, contador, valor):
return f"Contador {contador}: {valor}"
def conta(self):
self.contador += 1
self.label["text"] = self.formata_contador(self.numero, self.contador)
class Aplicação(tk.Tk):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.contadores = []
self.cria_quadro()
def cria_quadro(self):
self.quadro = ttk.Frame(self)
self.botao = ttk.Button(
self.quadro, text="Adiciona novo contador", command=self.adiciona_contador
)
self.botao.pack()
self.quadro.pack(expand=True)
def adiciona_contador(self):
novo_contador = Contador(len(self.contadores) + 1, master=self.quadro)
self.contadores.append(novo_contador)
raiz = Aplicação()
raiz.mainloop()