Construir um calendário é uma ótima maneira de aprender sobre a criação de aplicativos GUI com o módulo Tkinter do Python. Você pode usar este aplicativo para gerenciar e planejar eventos com antecedência.
Indo além, você pode estender o aplicativo para rastrear as próximas reuniões e definir lembretes. Você pode até introduzir a colaboração com os calendários de outros usuários para evitar conflitos de agendamento.
Tudo começa com o esqueleto básico de um aplicativo GUI Calendar.
Os módulos Calendar, Tkinter e DateTime
Para construir o Calendário da GUI, você usará o Calendário, o Tkinter e o Módulo DateTime. O módulo de calendário vem com o Python e permite que você execute ações relacionadas a datas, meses e calendários.
Tkinter permite que você crie aplicativos de desktop. Ele oferece uma variedade de widgets, bibliotecas úteis, objetos de tela e analisadores HTML/XML/PDF. Para construir um aplicativo GUI, tudo o que você precisa fazer é:
- Importe a biblioteca.
- Crie uma janela.
- Adicione widgets a essa janela.
- Chame o loop de evento principal para executar ações com base na interação do usuário.
Para instalar o Tkinter em seu sistema, abra um terminal e execute:
pip instalar tkinter
O módulo DateTime é outro integrado. Ele oferece várias classes que podem lidar com datas, horas e intervalos de tempo. Com este módulo, você pode construir um agendador de eventos, um despertador, uma calculadora de data e um aplicativo de fuso horário.
Como construir um calendário GUI usando Python
Você pode encontrar o código-fonte do GUI Calendar usando Python neste Repositório GitHub.
Comece importando o módulo Tkinter, Calendar e DateTime. Defina uma função, printCalendar. Use o pegar() método no Spinbox (definido posteriormente no código) para extrair o mês e o ano que o usuário escolheu. Passe esses valores para o módulo de calendário para obter um calendário de texto formatado representando o ano e o mês especificados. Este texto representa uma grade monoespaçada simples, com dias organizados em semanas começando na segunda-feira.
Limpe todos os dados existentes da tela. 1.0 indica o início do campo, e fim indica o fim do campo. Por fim, insira o calendário gerado anteriormente e exiba-o na tela.
de tkinter importar *
importar calendário
de data hora importar data
defprintCalendar():
mês = int (month_box.get())
ano = int (caixa_ano.get())
output_calendar = calendar.month (ano, mês)
calendar_field.delete(1.0, 'fim')
calendar_field.insert('fim', calendário_saída)
Defina uma função, reiniciar. Exclua o conteúdo da tela e defina o mês e o ano para o presente e use o config() método para exibi-lo na tela.
defreiniciar():
calendar_field.delete(1.0, 'fim')
var_mês.set (mês_atual)
var_ano.set (ano_atual)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Defina uma função, feche para destruir a exibição da janela e saia do programa.
deffechar():
guiWindow.destroy()
Inicialize a instância do Tkinter e exiba a janela raiz. Defina o título, as dimensões em pixels e desative seu redimensionamento mantendo os parâmetros como 0.
se __nome__ == "__principal__":
guiWindow = Tk()
guiWindow.title("Calendário GUI")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)
Defina quatro quadros para o título do cabeçalho, a entrada do mês e do ano, a exibição e os botões. Ele executa a função de um container, direcionando a colocação de outros widgets. Ele organiza o layout e fornece preenchimento para esses widgets usando seções retangulares na tela.
Organize os quadros em blocos antes de colocá-los na guijanela usando o pacote() método. Defina o valor de expandir como true para permitir que o widget seja redimensionado e expandido em seu espaço disponível. Colocou o preencher atributo para ambos para permitir que o widget se expanda para ocupar toda a janela na direção x e y.
header_frame = Quadro (guiWindow)
entry_frame = Quadro (guiWindow)
result_frame = Quadro (guiWindow)
button_frame = Quadro (guiWindow)
header_frame.pack (expandir=Verdadeiro, preencha="ambos")
entry_frame.pack (expandir=Verdadeiro, preencha="ambos")
result_frame.pack (expandir=Verdadeiro, preencha="ambos")
button_frame.pack (expandir=Verdadeiro, preencha="ambos")
Especifique três rótulos para o cabeçalho, mês e ano. Defina a janela principal na qual deseja colocá-la, o texto que ela exibirá, os estilos de fonte junto com a cor da fonte. Embale e coloque as etiquetas em uma posição apropriada. Associado IntVar() com o entrada_quadro para definir e receber dados inteiros.
header_label = Rótulo (header_frame, text="CALENDÁRIO",
fonte=('arial', '45', 'audacioso'), fg ="#A020F0")header_label.pack (expandir=Verdadeiro, preencha="ambos")
months_label = Rótulo (entry_frame, text="Mês:",
fonte=("arial", "20", "audacioso"), fg ="#000000")year_label = Rótulo (entry_frame, text="Ano:",
fonte=("arial", "20", "audacioso"), fg ="#000000")
mês_rótulo.lugar (x=30, y=0)
ano_rótulo.lugar (x=275, y=0)
var_mês = IntVar (quadro_entrada)
ano_var = IntVar (entry_frame)
Obtenha o mês atual, ano e defina-o para a variável IntVar(). Use o widget Spinbox para especificar um intervalo de valores para o usuário. Defina o intervalo de valores que o Spinbox conterá, a largura, o valor atual que deve conter e os estilos de fonte. Posicione as caixas adequadamente.
current_month = data.hoje().mês
current_year = data.hoje().ano
var_mês.set (mês_atual)
var_ano.set (ano_atual)months_box = Spinbox (entry_frame, from_=1, para =12, largura="10",
textvariable=mês_var, fonte=('arial','15'))year_box = Spinbox (entry_frame, from_=0000, para =3000, largura="10",
textvariable=ano_var, fonte=('arial','15'))
mês_caixa.lugar (x=130, y=5)
ano_caixa.lugar (x=360, y=5)
Declare um campo de texto e defina sua janela pai, largura, altura, estilo de fonte, estilo de animação 3D e largura da borda. Organize o widget de texto e declare três botões para exibir, redefinir e fechar a janela. Os botões contêm uma propriedade adicional de cor de fundo e uma propriedade de comando.
Usando a propriedade command, você pode definir a função que deve ser executada quando clicada. Coloque os botões em uma única linha com amplo espaço entre cada um deles.
calendar_field = Texto (resultado_quadro, largura=20, altura=8,
fonte=("correio", "18"), relevo=CUME, largura da borda=2)calendar_field.pack()
display_button = Botão (button_frame, text="MOSTRAR", bg ="#A020F0",
fg="#E0FFFF", comando=imprimirCalendário, fonte=('arial', '15'))reset_button = Botão (button_frame, text="REINICIAR", bg ="#A020F0",
fg="#E0FFFF", comando=redefinir, fonte=('arial','15'))close_button = Botão (button_frame, text="FECHAR", bg ="#A020F0",
fg="#E0FFFF", comando=fechar, fonte=('arial','15'))
display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
close_button.place (x=350, y=0)
O circuito principal() A função diz ao Python para executar o loop de eventos Tkinter e ouvir eventos (como pressionamentos de botão) até que você feche a janela.
guiWindow.mainloop()
Junte todo o código para ver o calendário da GUI em ação.
Saída de amostra do calendário da GUI
Ao executar o programa acima, o programa exibe uma janela com o mês e a data atuais. O botão Redefinir exibe a mesma tela quando clicado.
Ao definir o mês como 3 e o ano como 2000, o programa exibe o calendário de março de 2000. Ao pressionar o botão Fechar, o programa destrói a janela e interrompe sua execução.
Assuma alguns projetos de GUI para iniciantes usando Python
Construir aplicativos GUI nunca foi tão fácil. O módulo Tkinter do Python fornece muitos widgets úteis que você pode personalizar totalmente com muito pouco código. Junto com isso, você obtém acesso a gerenciadores de layout, como pack, grid e place para posicionar os elementos de acordo com o seu desejo.
Você pode criar um jogo de teste de digitação, paleta de cores, conversor de moeda ou calculadora para começar. Esses aplicativos são divertidos de construir e desenvolverão suas habilidades de programação orientada a objetos com facilidade.