Erfahren Sie, wie Sie mit Python und der Tkinter-Bibliothek Ihre eigene News-Anwendung erstellen.

In dieser schnelllebigen Welt ist es von entscheidender Bedeutung, über die neuesten Nachrichten auf dem Laufenden zu bleiben. Erstellen Sie Ihre eigene Nachrichtenanwendung, mit der Sie Nachrichten aus verschiedenen Kategorien wie Unterhaltung, Sport und Technologie auf jeder Plattform direkt zur Hand haben.

Sie entwickeln diese Anwendung mit Tkinter, der Standard-GUI-Bibliothek für Python, und betreiben sie mithilfe der News-API, die Artikel aus mehr als 80.000 Quellen abruft.

Installieren Sie tkinter und fordern Sie Module an

Tkinter ist ein plattformübergreifendes, einfaches und benutzerfreundliches Modul mit dem Sie schnell grafische Benutzeroberflächen erstellen können. Einige der Zu den Anwendungen, die Sie mit Tkinter erstellen können, gehört ein Musikplayer, Kalender, Gewichtsumrechnungstool, Worträtselspiel und so weiter.

Installieren tkinter Führen Sie in Ihrem System den folgenden Befehl im Terminal aus:

pip install tkinter

Der Anfragen Das Modul erleichtert die Durchführung von HTTP-Anfragen. Mit diesem, Sie können interessante Anwendungen entwickeln, beispielsweise einen Website-Statusprüfer, Web Scraper, Börsenmonitor-Bot und Website-Performance-Tester. Um das Anforderungsmodul zu installieren, öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

pip-Installationsanfragen

Den gesamten Quellcode der News-Anwendung mit Python finden Sie hier GitHub-Repository.

Generieren Sie den News-API-Schlüssel

Beginnen Sie mit dem Importieren der erforderlichen Bibliotheken. Melden Sie sich an unter Nachrichten-API und generieren Sie Ihren API-Schlüssel. Mit dem kostenlosen Entwicklerkonto können Sie täglich bis zu 100 Anfragen senden, was sich hervorragend zum Testen und Einstieg eignet. Speichern Sie die API in einer Variablen, die Sie später mit der Basis-URL verwenden, um die Top-Schlagzeilen entsprechend Ihrem Land abzurufen.

aus tkinter importieren *
aus tkinter importieren Nachrichtenbox
importieren Anfragen

apiKey = 'YOUR_API_KEY'

Definieren Sie die Struktur der App

Definieren Sie eine Klasse, NewsApp. Verweisen Sie auf die API-Schlüssel Und Typ Variablen global. Definieren Sie ein Objekt der Klasse und initialisieren Sie das Root-Fenster. Legen Sie die Abmessungen und den Titel Ihrer Bewerbung fest. Definieren Sie zwei Listen. Sie verwenden die erste Liste zum Definieren der Schaltflächen und die zweite zum Definieren der Nachrichtenkategorien, die Sie in Ihrer Anwendung anzeigen möchten.

KlasseNewsApp:
global apiKey, Typ
def__drin__(Selbst, Wurzel):
self.root = root
self.root.geometry('1000x650')
self.root.title(„News-Anwendung“)
self.newsCategoryButton = []
self.newsCategory = ["allgemein", "Unterhaltung", "Sport", "Technologie"]

Definieren Sie eine Bezeichnung, die als Titel für Ihre Bewerbung dient. Übergeben Sie das übergeordnete Element, in dem Sie es platzieren möchten, den Text, den es anzeigen soll, den Schriftstil, den Abstand und die Hintergrundfarbe, die es haben soll. Benutzen Sie die Pack() Fülloption, damit die Beschriftung den gesamten Raum in X-Richtung einnimmt.

Definieren Sie a LabelFrame und legen Sie sein übergeordnetes Element zusammen mit der Hintergrundfarbe fest, die es haben soll. Benutzen Sie die Ort() Funktion, um es an bestimmten Koordinaten zu organisieren. Übergeben Sie zusätzlich die Breite und Höhe des Rahmens.

 title = Label (self.root, text=„News-Anwendung“, Schriftart=(„Times New Roman“, 28, "deutlich"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.Platz (x=20, y=80, Breite=215, Höhe=210)

Definieren Sie eine for-Schleife, die über die gesamte Länge läuft newsCat Liste. Definieren Sie eine Schaltfläche im zuvor definierten Frame. Übergeben Sie den Text, der angezeigt werden soll, und wandeln Sie ihn in Großbuchstaben um. Übergeben Sie die Breite, die Rahmentiefe, den Schriftstil und die Hintergrundfarbe der Schaltflächen. Benutzen Sie die Netz Manager, um die Schaltflächen in einem Spaltenformat anzuordnen und Abstände in X- und Y-Richtung hinzuzufügen.

Verwenden Sie die Bind-Methode, um die Schaltfläche und den News-Bereich anzuhängen. definiert, dass die Nachrichtenbereich Die Funktion wird durch den linken Mausklick des Benutzers ausgeführt. Hängen Sie diese Schaltflächen an die an newsCatButton Liste, die zuvor definiert wurde.

für ich In Bereich (len (self.newsCategory)):
b = Schaltfläche (F1, text=self.newsCategory[i].upper(), width=15, bd=3, Schriftart=„Arial 14 fett“, bg='#c154c1')
b.grid (Zeile=i, Spalte=0, padx=10, pady=5)
b.bind('', selbst. Newsbereich)
self.newsCategoryButton.append (b)

Definieren Sie einen Rahmen und übergeben Sie ihm das übergeordnete Element, in dem Sie ihn platzieren möchten, sowie die Rahmentiefe, die er haben soll. Organisieren Sie es an angegebenen Koordinaten und übergeben Sie die relative Höhe und Breite. Definieren Sie eine vertikale Bildlaufleiste mit Orient Parameter und platzieren Sie ihn in diesem Frame.

Definieren Sie ein Text-Widget. Übergeben Sie das übergeordnete Element als diesen Rahmen zusammen mit dem Schriftstil und der Hintergrundfarbe, die es haben soll. Beim Festlegen des Werts des yscrollcommand als scroll_y.set Es ruft die aktuelle Position der Bildlaufleiste bei Benutzerinteraktion ab.

 F2 = Frame (self.root, bd=3)
F2.Platz (x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = Bildlaufleiste (F2, orient=VERTIKAL)
self.txtarea = Text (F2, yscrollcommand=scroll_y.set, font=(„Times New Roman“, 15, "deutlich"), bg='#fc6c85')

Benutzen Sie die Pack() Fülloption, um die Bildlaufleiste auf der rechten Seite des Rahmens zu platzieren und den gesamten Raum in Y-Richtung einzunehmen. Beim Festlegen des Befehlsparameters als txtarea.yview, wird die Bewegung der Bildlaufleiste mit den Auf- und Ab-Funktionen verknüpft. Wenn der Benutzer also mit der Bildlaufleiste interagiert, ändern sich die Ansichten des Textbereichs entsprechend.

Benutzen Sie die Einfügung() Methode, um den Benutzer aufzufordern, eine Kategorie auszuwählen und sie am Ende eines vorhandenen Textes zu platzieren. Benutzen Sie die Pack() Methode, um das Text-Widget aufzufordern, den Platz in X- und Y-Richtung einzunehmen und bei Bedarf zusätzlichen Platz zuzuweisen, indem Sie die verwenden expandieren Parameter.

 scroll_y.pack (Seite=RECHTS, Füllung=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (ENDE,"Wählen Sie eine Kategorie aus:")
self.txtarea.pack (fill=BOTH, expand=1)

Extrahieren Sie Neuigkeiten aus der API-Antwort

Definieren Sie eine Funktion, Nachrichtenbereich() das die aktuelle Instanz der Klasse und das Schaltflächenereignis akzeptiert. Übergeben Sie die Kategorie der vom Benutzer ausgewählten Nachrichten in Kleinbuchstaben und speichern Sie sie. Übergeben Sie die erforderlichen Parameter an die Basis-URL und löschen Sie jeglichen zuvor vorhandenen Text vom ersten bis zum letzten Index. Fügen Sie eine Linie zur Abgrenzung ein.

Definieren Sie a versuchen Blockieren und senden Sie eine HTTP-GET-Anfrage an den in der Basis-URL definierten Server. Konvertieren Sie die Antwort in das JSON-Format und extrahieren Sie den Inhalt, der den Schlüssel als enthält Artikel und speichere es in einer Variablen.

defNachrichtenbereich(Selbst, Ereignis):
type = event.widget.cget('Text').untere()
BASE_URL = F' http://newsapi.org/v2/top-headlines? Land=in&Kategorie={Typ}&apiKey=' + apiKey
self.txtarea.delete("1.0", ENDE)
self.txtarea.insert (ENDE, "\N")
versuchen:
Articles = (requests.get (BASE_URL).json())['Artikel']

Wenn die Anzahl der abgerufenen Artikel nicht Null ist, führen Sie eine Schleife aus und fügen Sie die Artikel einzeln in das Text-Widget ein. Zeigen Sie den Titel, gefolgt von der Beschreibung, dem Inhalt und der URL in separaten Zeilen an. Fügen Sie zwei Linien zur Abgrenzung ein. Wenn die Anzahl der Artikel Null ist, wird angezeigt, dass für diese bestimmte Kategorie keine Nachrichten verfügbar sind.

Wenn der Try-Block fehlschlägt, verwenden Sie den Ausnahmeblock, um den Benutzern die entsprechende Fehlermeldung anzuzeigen.

Wenn (Artikel != 0):
für ich In Bereich (len (Artikel)):
self.txtarea.insert (ENDE, F"{Artikel[i]['Titel']}\N")
self.txtarea.insert (ENDE, F"{Artikel[i]['Beschreibung']}\N")
self.txtarea.insert (ENDE, F"{Artikel[i]['Inhalt']}\N")
self.txtarea.insert (ENDE, f"weiterlesen...{Artikel[i]['URL']}\N")
self.txtarea.insert (ENDE, "\N")
self.txtarea.insert (ENDE, "\N")
anders:
self.txtarea.insert (ENDE, „Keine Neuigkeiten verfügbar“)
außer Ausnahme als e:
messagebox.showerror('FEHLER', „Es tut uns leid, wir sind auf einige Probleme gestoßen. Bitte überprüfen Sie die Internetverbindung und versuchen Sie es erneut.)

Erstellen Sie eine Instanz der Klasse und initialisieren Sie sie. Der Hauptschleife() Die Funktion weist Python an, die Tkinter-Ereignisschleife auszuführen und auf Ereignisse zu warten, bis Sie das Fenster schließen.

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

Fügen Sie den gesamten Code zusammen und Ihre Anwendung ist bereit, Nachrichten nach verschiedenen Kategorien anzuzeigen.

Die Ausgabe der Nachrichtenanwendung

Beim Ausführen des Programms werden Sie im Textbereich aufgefordert, eine Kategorie auszuwählen. Wenn Sie auf eine der Schaltflächen klicken, werden die Nachrichten mit der Beschreibung, dem Inhalt und dem zugehörigen Link (falls vorhanden) für diese Kategorie durch zwei Zeilen getrennt angezeigt.

Nützliche APIs für Ihr Python-Projekt

APIs sind äußerst praktisch, um neue Anwendungen in bestehende Softwaresysteme zu integrieren. Sie können die OpenWeatherMap-API verwenden, um Echtzeit-Wetterinformationen für jedes Gebiet abzurufen, und die Google Maps-API, um Karten in Ihre Website-Anwendung zu integrieren. Sie können GitHub-Aufgaben über die GitHub-API automatisieren und die Zoom-API zur Integration von Videokonferenzen verwenden.

Mithilfe der OpenAI-API können Sie die Leistungsfähigkeit von ChatGPT auch in Ihren eigenen Apps nutzen und einige faszinierende KI-gestützte Anwendungen erstellen.