Scopri come creare la tua applicazione News con Python e la libreria Tkinter.

In questo mondo frenetico, rimanere aggiornati con le ultime notizie è fondamentale. Crea la tua applicazione di notizie che ti fornisce notizie in diverse categorie come intrattenimento, sport e tecnologia accessibili su qualsiasi piattaforma a portata di mano.

Svilupperai questa applicazione utilizzando Tkinter, la libreria GUI standard per Python, e la alimenterai utilizzando l'API News che ottiene articoli da più di 80.000 fonti.

Installa tkinter e richiede i moduli

Tkinter è un modulo multipiattaforma, semplice e intuitivo che puoi utilizzare per creare rapidamente interfacce utente grafiche. Alcuni dei le applicazioni che puoi creare usando Tkinter includono un lettore musicale, calendario, strumento di conversione del peso, gioco di parole confuse e così via.

Installare tkinter nel tuo sistema, esegui il seguente comando nel terminale:

pip installa tkinter

IL richieste rende più semplice effettuare richieste HTTP. Con questo,

instagram viewer
puoi sviluppare applicazioni interessanti come un controllo dello stato del sito web, web scraper, bot di monitoraggio del mercato azionario e tester delle prestazioni del sito web. Per installare il modulo delle richieste, apri il terminale ed esegui il seguente comando:

richieste di installazione pip

Puoi trovare l'intero codice sorgente dell'applicazione News usando Python in questo Deposito GitHub.

Genera la chiave API di News

Inizia importando le librerie richieste. Iscriviti a API di notizie e genera la tua chiave API. Con l'account sviluppatore gratuito, puoi inviare fino a 100 richieste al giorno, il che è ottimo per testare e iniziare. Memorizza l'API in una variabile che utilizzerai in seguito con l'URL di base per recuperare i titoli principali in base al tuo paese.

da tkinter importare *
da tkinter importare casella dei messaggi
importare richieste

apiKey = "LA TUA_CHIAVE_API"

Definire la struttura dell'app

Definisci una classe, NewsApp. Fare riferimento al apiKey E tipo variabili a livello globale. Definire un oggetto della classe e inizializzare la finestra root. Imposta le dimensioni e il titolo della tua applicazione. Definisci due elenchi, utilizzerai il primo elenco per definire i pulsanti e il secondo per definire le categorie di notizie che desideri visualizzare nella tua applicazione.

classeNewsApp:
globale apiKey, digitare
def__dentro__(sé, radice):
self.root = radice
self.radice.geometria('1000x650')
self.root.titolo("Applicazione di notizie")
self.newsCategoryButton = []
self.newsCategoria = ["generale", "divertimento", "gli sport", "tecnologia"]

Definisci un'etichetta che funge da titolo per la tua applicazione. Passa l'elemento genitore in cui desideri inserirlo, il testo che dovrebbe visualizzare, lo stile del carattere, il riempimento e il colore di sfondo che dovrebbe avere. Usa il pacchetto() riempimento per fare in modo che l'etichetta occupi l'intero spazio nella direzione X.

Definisci un EtichettaFrame e imposta il suo elemento genitore insieme al colore di sfondo che dovrebbe possedere. Usa il posto() funzione per organizzarlo a coordinate specificate. Inoltre, passa la larghezza e l'altezza del telaio.

 title = Etichetta (self.root, text="Applicazione di notizie", carattere=("tempi nuovi romani", 28, "grassetto"), pady=2, bg='#ff007f').pack (riempimento=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.posto (x=20, y=80, larghezza=215, altezza=210)

Definire un ciclo for che attraversa la lunghezza del file newsCat elenco. Definire un pulsante nel riquadro definito in precedenza. Passa il testo che dovrebbe visualizzare e convertilo in maiuscolo. Passa la larghezza, la profondità del bordo, lo stile del carattere e il colore di sfondo dei pulsanti. Usa il griglia manager per disporre i pulsanti in un formato a colonne e aggiungere il riempimento nelle direzioni X e Y.

Utilizzare il metodo bind per allegare il pulsante e l'area delle notizie. definisce che il Newsarea funzione si verificherà con il clic sinistro del mouse da parte dell'utente. Aggiungi questi pulsanti al file newsCatButton elenco definito in precedenza.

per io In intervallo (len (self.newsCategory)):
b = Pulsante (F1, text=self.newsCategory[i].upper(), width=15, bd=3, carattere="arial 14 grassetto", bg='#c154c1')
b.grid (riga=i, colonna=0, padx=10, pady=5)
b.bind('', se stesso. Area notizie)
self.newsCategoryButton.append (b)

Definisci una cornice e passagli l'elemento genitore in cui vuoi posizionarlo e la profondità del bordo che dovrebbe avere. Organizzalo alle coordinate specificate e passa l'altezza e la larghezza relative. Definire una barra di scorrimento verticale utilizzando il orientare parametro e posizionarlo in questo frame.

Definire un widget di testo. Passa l'elemento genitore come questa cornice insieme allo stile del carattere e al colore di sfondo che dovrebbe possedere. Impostando il valore di yscrollcommand COME scroll_y.set ottiene la posizione corrente della barra di scorrimento sull'interazione dell'utente.

 F2 = Frame (self.root, bd=3)
F2.posto (x=260, y=80, ampiezza=0.7, realtezza=0.8)
scroll_y = Barra di scorrimento (F2, orient=VERTICALE)
self.txtarea = Testo (F2, yscrollcommand=scroll_y.set, font=("tempi nuovi romani", 15, "grassetto"), bg='#fc6c85')

Usa il pacchetto() riempimento per posizionare la barra di scorrimento sul lato destro della cornice e occupare l'intero spazio nella direzione Y. Impostando il parametro di comando come txtarea.yview, il movimento della barra di scorrimento viene collegato alle funzioni su e giù. Pertanto, quando l'utente interagisce con la barra di scorrimento, le visualizzazioni dell'area di testo cambiano di conseguenza.

Usa il inserire() metodo per chiedere all'utente di selezionare una categoria e posizionarla alla fine di qualsiasi testo esistente. Usa il pacchetto() metodo per chiedere al widget di testo di prendere lo spazio nella direzione X e Y e assegnare spazio aggiuntivo se necessario utilizzando il metodo espandere parametro.

 scroll_y.pack (lato=DESTRA, riempimento=Y)
scroll_y.config (comando=self.txtarea.yview)
self.txtarea.insert (FINE,"Seleziona una categoria:")
self.txtarea.pack (fill=ENTRAMBE, expand=1)

Estrai notizie dalla risposta API

Definire una funzione, Area notizie() che accetta l'istanza corrente della classe e l'evento del pulsante. Passa la categoria della notizia selezionata dall'utente in minuscolo e memorizzala. Passa i parametri richiesti all'URL di base ed elimina qualsiasi testo presente in precedenza dal primo all'ultimo indice. Inserisci una linea di demarcazione.

Definisci un Tentativo bloccare e inviare una richiesta HTTP GET al server definito nell'URL di base. Converti la risposta in formato JSON ed estrai i contenuti che hanno la chiave come articoli e memorizzarlo in una variabile.

defNewsarea(sé, evento):
tipo = evento.widget.cget('testo').inferiore()
BASE_URL = F' http://newsapi.org/v2/top-headlines? paese=in&categoria={tipo}&apiKey=' + chiave API
self.txtarea.delete("1.0", FINE)
self.txtarea.insert (FINE, "\N")
Tentativo:
articoli = (requests.get (BASE_URL).json())['articoli']

Se il numero di articoli recuperati non è zero, esegui un ciclo e inserisci gli articoli uno per uno nel widget di testo. Visualizza il titolo, seguito dalla descrizione, dal contenuto e dall'URL in righe separate. Inserisci due linee di demarcazione. Se il numero di articoli è zero, visualizza che nessuna notizia è disponibile per quella particolare categoria.

Se il blocco try ha esito negativo, utilizzare il blocco eccezione per visualizzare il messaggio di errore appropriato agli utenti.

Se (articoli != 0):
per io In gamma (len (articoli)):
self.txtarea.insert (FINE, F"{articoli[i]['titolo']}\N")
self.txtarea.insert (FINE, F"{articoli[i]['descrizione']}\N")
self.txtarea.insert (FINE, F"{articoli[i]['contenuto']}\N")
self.txtarea.insert (FINE, f"leggi di più...{articoli[i]['URL']}\N")
self.txtarea.insert (FINE, "\N")
self.txtarea.insert (FINE, "\N")
altro:
self.txtarea.insert (FINE, "Nessuna notizia disponibile")
tranne Eccezione COME e:
messagebox.showerror('ERRORE', "Spiacenti, abbiamo riscontrato alcuni problemi. Verificare la connessione a Internet e riprovare.")

Crea un'istanza della classe e inizializzala. IL ciclo principale() La funzione dice a Python di eseguire il ciclo di eventi Tkinter e di ascoltare gli eventi finché non chiudi la finestra.

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

Metti insieme tutto il codice e la tua applicazione è pronta per visualizzare le notizie secondo diverse categorie.

L'output dell'applicazione Notizie

Avviando il programma, l'area di testo chiede di selezionare una categoria. Facendo clic su uno qualsiasi dei pulsanti, visualizza la notizia con la descrizione, il contenuto e il relativo collegamento (se presente) per quella categoria separati da due righe.

API utili per il tuo progetto Python

Le API sono molto utili per integrare nuove applicazioni con i sistemi software esistenti. Puoi utilizzare l'API OpenWeatherMap per recuperare informazioni meteorologiche in tempo reale di qualsiasi area e l'API di Google Maps per incorporare le mappe nell'applicazione del tuo sito web. Puoi automatizzare le attività GitHub tramite l'API GitHub e utilizzare l'API Zoom per integrare la videoconferenza.

Puoi anche utilizzare la potenza di ChatGPT all'interno delle tue app utilizzando l'API di OpenAI e creare alcune affascinanti applicazioni basate sull'intelligenza artificiale.