Crie um Relógio Digital com Python

PythonBeginner
Pratique Agora

Introdução

Neste projeto, criaremos uma aplicação de relógio digital usando Python e a biblioteca Tkinter. Este relógio exibirá tanto a hora quanto a data atuais, e permitirá ao usuário alternar entre os formatos de hora de 12 e 24 horas. Dividiremos o código em várias etapas, começando com a instalação das bibliotecas necessárias e terminando com a execução do projeto.

👀 Pré-visualização

Pré-visualização da aplicação de relógio digital

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como instalar as bibliotecas necessárias para construir um relógio digital com Python.
  • Como configurar o projeto criando o script Python e importando as bibliotecas necessárias.
  • Como definir uma função para atualizar e exibir a hora e a data atuais.
  • Como criar uma função para alternar entre os formatos de hora de 12 e 24 horas.
  • Como criar a janela principal da aplicação e configurar os estilos da GUI.
  • Como criar e colocar os componentes da GUI na janela principal.
  • Como iniciar o relógio chamando as funções necessárias e executando o loop principal da GUI.

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Instalar bibliotecas usando pip, o gerenciador de pacotes Python.
  • Usar a biblioteca Tkinter para criar interfaces gráficas de usuário (GUI) em Python.
  • Formatar e exibir hora e data em Python.
  • Personalizar a aparência dos componentes da GUI usando estilos temáticos.
  • Criar botões com texto e funcionalidades diferentes.
  • Executar um script Python e executar um loop principal da GUI.

Instalar as Bibliotecas Necessárias

Antes de começarmos a construir nosso relógio digital com Python, precisamos garantir que temos as bibliotecas necessárias instaladas. Nesta etapa, instalaremos as bibliotecas necessárias usando pip, o gerenciador de pacotes Python.

sudo apt update
sudo apt-get install python3-tk -y
pip install ttkthemes

Aqui está a finalidade dessas bibliotecas:

  • tkinter: Esta biblioteca fornece as ferramentas e componentes necessários para criar interfaces gráficas de usuário (GUIs) em Python. É uma biblioteca padrão para desenvolvimento de GUI.
  • ttkthemes: Esta biblioteca nos permite usar estilos temáticos e personalizar a aparência de nossos componentes Tkinter para dar ao nosso relógio digital um design visualmente atraente.

Você pode instalar essas bibliotecas usando os comandos acima em seu terminal ou prompt de comando. Uma vez instaladas, você está pronto para prosseguir com a construção do relógio digital, conforme descrito nas etapas seguintes.

Agora, crie um novo arquivo Python chamado digital_clock.py e abra-o em seu editor de código preferido.

cd ~/project
touch digital_clock.py

Configurando o Projeto

Primeiro, vamos configurar o projeto criando o script Python necessário e importando as bibliotecas necessárias.

## Importar as bibliotecas necessárias
import tkinter as tk
from tkinter import ttk
from ttkthemes import ThemedStyle
from time import strftime

Nesta etapa:

  • Importamos a biblioteca tkinter para criar a interface gráfica de usuário (GUI).
  • Importamos componentes específicos (ttk, ThemedStyle) de tkinter para estilização avançada.
  • Importamos a função strftime do módulo time para formatar e exibir a hora.

Definir a Função de Exibição de Tempo

Em seguida, vamos definir uma função para atualizar e exibir a hora e a data atuais.

def time():
    current_time_format = "%H:%M:%S" if is_24_hour_format else "%I:%M:%S %p"
    current_time = strftime(current_time_format)
    current_date = strftime("%A, %B %d, %Y")
    label_time.config(text=current_time)
    label_date.config(text=current_date)
    label_time.after(1000, time)

Nesta etapa:

  • Criamos uma função chamada time() que atualiza os rótulos de hora e data.
  • A variável current_time_format determina se deve usar um formato de hora de 24 horas ou 12 horas com base na flag is_24_hour_format.
  • Usamos a função strftime para obter a hora e a data atuais no formato desejado.
  • Os rótulos (label_time e label_date) são atualizados com a hora e a data atuais, respectivamente.
  • A linha label_time.after(1000, time) agenda a função time para ser executada a cada 1000 milissegundos (1 segundo) para atualizar continuamente a hora.

Alternar Formato de Hora

Vamos criar uma função que permite ao usuário alternar entre os formatos de hora de 12 e 24 horas.

def toggle_time_format():
    global is_24_hour_format
    is_24_hour_format = not is_24_hour_format
    time_format_button.config(text="12 Hour" if is_24_hour_format else "24 Hour")

Nesta etapa:

  • Definimos uma função chamada toggle_time_format() que alterna a flag is_24_hour_format entre True e False.
  • O rótulo no botão de formato de hora (time_format_button) é atualizado para exibir "12 Hour" ou "24 Hour" com base no formato atual.

Criar a Janela Principal da Aplicação

Agora, vamos criar a janela principal da aplicação e definir seu título e dimensões.

root = tk.Tk()
root.title("Digital Clock")
root.geometry("400x250")

Nesta etapa:

  • Criamos a janela principal da aplicação usando tk.Tk().
  • Definimos o título da janela como "Digital Clock".
  • As dimensões da janela são definidas como 400x250 pixels.

Configurar Estilos da Interface Gráfica (GUI)

Configure os estilos para os rótulos (labels), botões (buttons) e frames para personalizar a aparência do relógio.

style = ThemedStyle(root)
style.set_theme("plastik")
style.configure(
    "TLabel", foreground="#FF5733", background="#333333", font=("calibri", 48, "bold")
)
style.configure(
    "TButton", foreground="#FF5733", background="#333333", font=("calibri", 10, "bold")
)
style.configure("TFrame", background="#333333")

Nesta etapa:

  • Criamos um estilo temático para os componentes da GUI para aplicar uma aparência consistente.
  • A cor do texto do rótulo, a cor de fundo e a fonte são personalizadas.
  • A cor do texto do botão, a cor de fundo e a fonte são personalizadas.
  • A cor de fundo do frame é personalizada.

Criar e Posicionar Componentes da Interface Gráfica (GUI)

Agora, vamos criar e posicionar os componentes da GUI na janela principal.

frame = ttk.Frame(root, style="TFrame", padding=20)
frame.place(relx=0.5, rely=0.5, anchor="center")

label_time = ttk.Label(frame, font=("calibri", 48, "bold"))
label_time.pack()

label_date = ttk.Label(frame, font=("calibri", 16))
label_date.pack()

is_24_hour_format = True
time_format_button = ttk.Button(
    frame, text="12 Hour", command=toggle_time_format, style="TButton"
)
time_format_button.pack(pady=20)

Nesta etapa:

  • Criamos um frame (frame) com o estilo e padding especificados.
  • O frame é centralizado na janela principal.
  • Dois rótulos (label_time e label_date) são criados para exibir a hora e a data.
  • Um valor inicial de True é definido para is_24_hour_format.
  • Um botão (time_format_button) é criado com o texto "12 Hour" e a função toggle_time_format é definida como seu comando.
  • Todos os componentes são empacotados e posicionados no frame.

Iniciar o Cronômetro

Finalmente, vamos iniciar o relógio chamando a função time e executando o loop principal da GUI.

time()

root.mainloop()

Nesta etapa:

  • Chamamos a função time() para iniciar o relógio.
  • O método root.mainloop() inicia o loop principal da GUI, permitindo que a aplicação seja executada e atualizada em tempo real.

Agora, vamos executar a aplicação do relógio digital.

cd ~/project
python digital_clock.py

Interface da aplicação do relógio digital

Resumo

Neste projeto, criamos uma aplicação de relógio digital usando Python e Tkinter. Dividimos o processo em várias etapas, incluindo a configuração do projeto, a definição de funções para exibição da hora e alternância de formato, a configuração de estilos da GUI, a criação de componentes da GUI e a execução da aplicação do relógio. Este relógio digital exibe a hora e a data atuais e permite que os usuários alternem entre os formatos de hora de 12 e 24 horas.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar