Olá pessoal, neste tutorial iremos criar um relógio digital em Python.

Aqui, usaremos o Tkinter para a GUI. Sem mais delongas, iniciaremos nosso aplicativo.

Vamos começar criando uma janela vazia no tkinter.
 

from tkinter import *
import tkinter

cor1 = "#3d3d3d" # preta
cor2 = "#fafcff" # branca
cor3 = "#21c25c" # verde
cor4 = "#eb463b" # vermelha
cor5 = "#dedcdc" # cinza
cor6 = "#3080f0" # azul

fundo = cor1
cor = cor3


janela = Tk()
janela.title("")
janela.geometry('440x180')
janela.resizable(width=FALSE, height=FALSE)
janela.configure(background=fundo)


janela.mainloop()

 

No código acima, criamos uma janela vazia no Tkinter, e definimos algumas cores que usaremos para nossa aplicação, a variável cor , será a cor da fonte, e a variável fundo será a cor de fundo.

E então importaremos o datetime, o que nos permitirá trabalhar com o horário e calendário.
 

from datetime import datetime

 

Depois disso, obteremos a hora, o dia da semana, o mês e o ano.

 

tempo = datetime.now()

hora = tempo.strftime("%H:%M:%S")
dia_semana = tempo.strftime("%A")
dia = tempo.day
mes = tempo.strftime("%b")
ano = tempo.strftime("%Y")

 

Vamos criar uma função e passar todos esses valores para essa função.

 

def relogio():
tempo = datetime.now()

hora = tempo.strftime("%H:%M:%S")
dia_semana = tempo.strftime("%A")
dia = tempo.day
mes = tempo.strftime("%b")
ano = tempo.strftime("%Y")

 

Depois disso vamos criar um label que mostrará a hora.
 

l1 = Label(janela, text="10:05:05", font=('Arial  80'), bg=fundo, fg=cor)
l1.grid(row=0, column=0, sticky=NW, padx=5)

 

Agora vamos passar o valor da hora para o label que acabamos de criar, e executar a função.

 

def relogio():
tempo = datetime.now()
hora = tempo.strftime("%H:%M:%S")
dia_semana = tempo.strftime("%A")
dia = tempo.day
mes = tempo.strftime("%b")
ano = tempo.strftime("%Y")

l1.config(text=hora)


Muito bem agora, para manter o tempo dinâmico, usaremos o seguinte l1.after(200, relogio) execute a função relogio():

 

def relogio():
tempo = datetime.now()
hora = tempo.strftime("%H:%M:%S")
dia_semana = tempo.strftime("%A")
dia = tempo.day
mes = tempo.strftime("%b")
ano = tempo.strftime("%Y")

l1.config(text=hora)
l1.after(200, relogio)


l1 = Label(janela, text="10:05:05", font=('Arial 80'), bg=fundo, fg=cor)
l1.grid(row=0, column=0, sticky=NW, padx=5)

# executando
relogio()


Agora que nosso relógio já está funcionando, passaremos também os valores restantes, criando um novo label.

 

l2 = Label(janela,  font=('Arial  20'), bg=fundo, fg=cor)
l2.grid(row=1, column=0, sticky=NW, padx=5)

 

E dentro da função de relógio iremos configurar da seguinte forma:
 

l2.config(text=dia_semana + "   " + str(dia) + "/" + str(mes) + "/" + (ano))

 

As funcionalidades do nosso relógio já estão prontas, agora vamos estilizar nosso relógio para que pareça mais digital.

Primeiro vamos baixar a fonte aqui neste site. font https://www.1001fonts.com/digital-7-font.html

Depois de baixar e extrair as fontes, e coloca no mesmo diretório em que está o nosso script python, iremos adicionar ao nosso aplicativo, mas para isso teremos que instalar outra biblioteca Python primeiro, que é:

pip install pyglet

Após a instalação, escreva o seguinte código para adicionar a fonte que acabamos de baixar.

 

import pyglet
pyglet.font.add_file('digital-7.ttf')

        

Após importar e vincular a fonte, basta usar a fonte e ela estará ativa.

 

Responsive image

 

Código completo

 

from tkinter import *
import tkinter
from datetime import datetime

import pyglet
pyglet.font.add_file('digital-7.ttf')

cor1 = "#3d3d3d" # preta
cor2 = "#fafcff" # branca
cor3 = "#21c25c" # verde
cor4 = "#eb463b" # vermelha
cor5 = "#dedcdc" # cinza
cor6 = "#3080f0" # azul

fundo = cor1
cor = cor3


janela = Tk()
janela.title("")
janela.geometry('300x180')
janela.resizable(width=FALSE, height=FALSE)
janela.configure(background=fundo)


def relogio():
tempo = datetime.now()
hora = tempo.strftime("%H:%M:%S")
dia_semana = tempo.strftime("%A")
dia = tempo.day
mes = tempo.strftime("%b")
ano = tempo.strftime("%Y")

l1.config(text=hora)
l1.after(200, relogio)
l2.config(text=dia_semana + " " + str(dia) +
"/" + str(mes) + "/" + (ano))


l1 = Label(janela, text="10:05:05", font=('digital-7 80'), bg=fundo, fg=cor)
l1.grid(row=0, column=0, sticky=NW, padx=5)
l2 = Label(janela, font=('digital-7 20'), bg=fundo, fg=cor)
l2.grid(row=1, column=0, sticky=NW, padx=5)


# executando
relogio()
janela.mainloop()