Aprenda a criar seu próprio aplicativo News com Python e a biblioteca Tkinter.

Neste mundo acelerado, manter-se atualizado com as últimas notícias é crucial. Crie seu próprio aplicativo de notícias que fornece notícias em diferentes categorias, como entretenimento, esportes e tecnologia, acessíveis em qualquer plataforma na ponta dos dedos.

Você desenvolverá esse aplicativo usando Tkinter, a biblioteca de GUI padrão para Python, e o alimentará usando a API de notícias que obtém artigos de mais de 80.000 fontes.

Instalar tkinter e solicitar módulos

Tkinter é um módulo multiplataforma, simples e fácil de usar que você pode usar para criar interfaces gráficas de usuário rapidamente. Alguns dos os aplicativos que você pode criar usando o Tkinter incluem um reprodutor de música, calendário, ferramenta de conversão de peso, jogo de palavras cruzadas e assim por diante.

Para instalar tkinter em seu sistema, execute o seguinte comando no terminal:

pip instalar tkinter

O solicitações de módulo torna mais fácil fazer solicitações HTTP. Com isso,

instagram viewer
você pode desenvolver aplicativos interessantes, como um verificador de status do site, web scraper, bot do monitor do mercado de ações e testador de desempenho do site. Para instalar o módulo de requisições, abra o terminal e execute o seguinte comando:

solicitações de instalação do pip

Você pode encontrar todo o código-fonte do aplicativo Notícias usando Python neste Repositório GitHub.

Gerar a chave de API de notícias

Comece importando as bibliotecas necessárias. Inscreva-se em API de notícias e gere sua chave de API. Com a conta de desenvolvedor gratuita, você pode enviar até 100 solicitações diariamente, o que é ótimo para testar e começar. Armazene a API em uma variável que você usará posteriormente com a URL base para buscar as principais manchetes de acordo com seu país.

de tkinter importar *
de tkinter importar caixa de mensagem
importar solicitações de

apiKey = 'SUA_API_KEY'

Defina a estrutura do aplicativo

Definir uma classe, aplicativo de notícias. Referencie o Chave API e tipo variáveis ​​globalmente. Defina um objeto da classe e inicialize a janela raiz. Defina as dimensões e o título do seu aplicativo. Defina duas listas, você usará a primeira lista para definir os botões e a segunda para definir as categorias de notícias que deseja exibir em seu aplicativo.

aulaaplicativo de notícias:
global apiKey, digite
def__iniciar__(eu, raiz):
self.root = root
self.root.geometry('1000x650')
self.root.title("Aplicativo de notícias")
self.newsCategoryButton = []
self.newsCategory = ["em geral", "entretenimento", "Esportes", "tecnologia"]

Defina um rótulo que atue como um título para seu aplicativo. Passe o elemento pai no qual deseja colocá-lo, o texto que deve exibir, o estilo da fonte, o preenchimento e a cor de fundo que deve ter. Use o pacote() opção de preenchimento para fazer com que o rótulo ocupe todo o espaço na direção X.

Definir um LabelFrame e defina seu elemento pai junto com a cor de fundo que ele deve possuir. Use o lugar() função para organizá-lo em coordenadas especificadas. Além disso, passe a largura e a altura do quadro.

 titulo = Rótulo (self.root, text="Aplicativo de notícias", fonte=("vezes nova romana", 28, "audacioso"), pady=2, bg ='#ff007f').pack (preenchimento=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.lugar (x=20, y =80, largura=215, altura=210)

Defina um loop for que percorra o comprimento do newsCat lista. Defina um botão no quadro definido anteriormente. Passe o texto que ele deve exibir e converta-o em maiúsculas. Passe a largura, a profundidade da borda, o estilo da fonte e a cor de fundo dos botões. Use o grade gerenciador para organizar os botões em um formato colunar e adicionar preenchimento nas direções X e Y.

Use o método bind para anexar o botão e a área de notícias. define que o área de notícias função ocorrerá no clique esquerdo do mouse pelo usuário. Anexe esses botões ao newsCatButton lista definida anteriormente.

para eu em intervalo (len (self.newsCategory)):
b = Botão (F1, text=self.newsCategory[i].upper(), width=15, bd =3, fonte="arial 14 negrito", bg ='#c154c1')
b.grid (linha=i, coluna=0, padx=10, pady =5)
b.bind('', auto. Newsarea)
self.newsCategoryButton.append (b)

Defina um quadro e passe o elemento pai no qual você deseja colocá-lo e a profundidade da borda que ele deve ter. Organize-o nas coordenadas especificadas e passe a altura e largura relativas. Defina uma barra de rolagem vertical usando o orientar parâmetro e coloque-o neste quadro.

Defina um widget de texto. Passe o elemento pai como este quadro junto com o estilo da fonte e a cor de fundo que ele deve possuir. Ao definir o valor do comando yscroll como scroll_y.set obtém a posição atual da barra de rolagem na interação do usuário.

 F2 = Quadro (self.root, bd=3)
F2.lugar (x=260, y =80, relwidth=0.7, releight=0.8)
scroll_y = barra de rolagem (F2, orient=VERTICAL)
self.txtarea = Texto (F2, yscrollcommand=scroll_y.set, fonte=("vezes nova romana", 15, "audacioso"), bg ='#fc6c85')

Use o pacote() opção de preenchimento para colocar a barra de rolagem no lado direito do quadro e ocupar todo o espaço na direção Y. Ao definir o parâmetro de comando como txtarea.yview, o movimento da barra de rolagem fica vinculado às funções para cima e para baixo. Portanto, quando o usuário interage com a barra de rolagem, as exibições da área de texto mudam de acordo.

Use o inserir() método para pedir ao usuário para selecionar uma categoria e colocá-la no final de qualquer texto existente. Use o pacote() para solicitar ao widget de texto que ocupe o espaço nas direções X e Y e atribua espaço adicional, se necessário, usando o expandir parâmetro.

 scroll_y.pack (lado=DIREITA, preenchimento=Y)
scroll_y.config (comando=self.txtarea.yview)
self.txtarea.insert (END,"Selecione uma categoria:")
self.txtarea.pack (fill=BOTH, expand=1)

Extrair notícias da resposta da API

Defina uma função, Newsarea() que aceita a instância atual da classe e o evento de botão. Passe a categoria da notícia que o usuário selecionou em minúsculas e armazene-a. Passe os parâmetros necessários para a URL base e exclua qualquer texto presente anteriormente do primeiro ao último índice. Insira uma linha para demarcação.

Definir um tentar bloqueie e envie uma solicitação HTTP GET para o servidor definido na URL base. Converta a resposta em formato JSON e extraia o conteúdo que possui a chave como artigos e armazená-lo em uma variável.

defárea de notícias(auto, evento):
tipo = event.widget.cget('texto').mais baixo()
BASE_URL = f' http://newsapi.org/v2/top-headlines? país=na&categoria={tipo}&apiKey=' + apiKey
self.txtarea.delete("1.0", FIM)
self.txtarea.insert (END, "\n")
tentar:
artigos = (requests.get (BASE_URL).json())['artigos']

Se o número de artigos buscados não for zero, execute um loop e insira os artigos um a um no widget de texto. Exiba o título, seguido da descrição, conteúdo e URL em linhas separadas. Insira duas linhas para demarcação. Se o número de artigos for zero, exibe que nenhuma notícia está disponível para aquela categoria específica.

Se o bloco try falhar, use o bloco de exceção para exibir a mensagem de erro apropriada para os usuários.

se (artigos != 0):
para eu em intervalo (len (artigos)):
self.txtarea.insert (END, f"{artigos[i]['título']}\n")
self.txtarea.insert (END, f"{artigos[i]['descrição']}\n")
self.txtarea.insert (END, f"{artigos[i]['contente']}\n")
self.txtarea.insert (END, p"leia mais...{artigos[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
outro:
self.txtarea.insert (END, "Nenhuma notícia disponível")
exceto Exceção como e:
messagebox.showerror('ERRO', "Desculpe, tivemos alguns problemas. Verifique a conexão com a Internet e tente novamente.")

Crie uma instância da classe e inicialize-a. O circuito principal() A função diz ao Python para executar o loop de eventos Tkinter e escutar os eventos até que você feche a janela.

raiz = Tk()
obj = NewsApp (raiz)
root.mainloop()

Junte todo o código e seu aplicativo está pronto para exibir notícias de acordo com diferentes categorias.

A saída do aplicativo de notícias

Ao executar o programa, a área de texto pede para selecionar uma categoria. Ao clicar em qualquer um dos botões, exibe a notícia com a descrição, conteúdo e seu link (se houver) para aquela categoria separados por duas linhas.

APIs úteis para seu projeto Python

APIs são super úteis para integrar novos aplicativos com sistemas de software existentes. Você pode usar a API OpenWeatherMap para recuperar informações meteorológicas em tempo real de qualquer área e a API do Google Maps para incorporar mapas em seu aplicativo de site. Você pode automatizar as tarefas do GitHub por meio da API do GitHub e usar a API do Zoom para integrar a videoconferência.

Você também pode usar o poder do ChatGPT em seus próprios aplicativos usando a API do OpenAI e criar alguns aplicativos fascinantes com tecnologia de IA.