Naučte sa, ako vytvoriť svoju vlastnú aplikáciu News pomocou Pythonu a knižnice Tkinter.

V tomto rýchlo sa meniacom svete je dôležité byť informovaný o najnovších správach. Zostavte si svoju vlastnú aplikáciu Správy, ktorá vám poskytne správy z rôznych kategórií, ako je zábava, šport a technológie dostupné na akejkoľvek platforme priamo na dosah ruky.

Túto aplikáciu budete vyvíjať pomocou Tkinter, štandardnej knižnice GUI pre Python, a napájať ju pomocou News API, ktoré získava články z viac ako 80 000 zdrojov.

Nainštalujte tkinter a vyžiadajte si moduly

Tkinter je multiplatformový, jednoduchý a užívateľsky prívetivý modul ktoré môžete použiť na rýchle vytváranie grafických používateľských rozhraní. Niektoré z aplikácie, ktoré môžete vytvoriť pomocou Tkinter, zahŕňajú hudobný prehrávač, kalendár, nástroj na konverziu hmotnosti, hru na miešanie slov atď.

Inštalovať tkinter vo svojom systéme spustite v termináli nasledujúci príkaz:

pip nainštalovať tkinter

The žiadosti modul uľahčuje vytváranie požiadaviek HTTP. S tým,

instagram viewer
môžete vyvíjať zaujímavé aplikácie, ako je kontrola stavu webových stránok, webový škrabák, bot monitorujúci akciový trh a tester výkonnosti webových stránok. Ak chcete nainštalovať modul požiadaviek, otvorte terminál a spustite nasledujúci príkaz:

požiadavky na inštaláciu pip

Celý zdrojový kód aplikácie News pomocou Pythonu nájdete v tomto úložisko GitHub.

Vygenerujte kľúč rozhrania News API

Začnite importovaním požadovaných knižníc. Zaregistrujte sa na News API a vygenerujte si kľúč API. S bezplatným účtom vývojára môžete odoslať až 100 žiadostí denne, čo je skvelé na testovanie a spustenie. Uložte rozhranie API do premennej, ktorú neskôr použijete so základnou adresou URL na načítanie hlavných nadpisov podľa vašej krajiny.

od tkinter importovať *
od tkinter importovať schránka správ
importovať žiadosti

apiKey = 'YOUR_API_KEY'

Definujte štruktúru aplikácie

Definujte triedu, NewsApp. Odkaz na apiKey a typu premenné globálne. Definujte objekt triedy a inicializujte koreňové okno. Nastavte rozmery a názov vašej aplikácie. Definujte dva zoznamy, prvý zoznam použijete na definovanie tlačidiel a druhý na definovanie kategórií noviniek, ktoré chcete zobrazovať vo vašej aplikácii.

triedaNewsApp:
globálne apiKey, typ
def__init__(ja, koreň):
self.koreň = koreň
self.root.geometria('1000 x 650')
self.root.title("Aplikácia správ")
self.newsCategoryButton = []
self.newsCategory = ["všeobecné", "zábava", "šport", "technológia"]

Definujte štítok, ktorý funguje ako názov vašej aplikácie. Zadajte rodičovský prvok, do ktorého ho chcete umiestniť, text, ktorý by mal zobrazovať, štýl písma, výplň a farbu pozadia, ktorú by mal mať. Použi balenie() možnosť vyplniť, aby štítok zaberal celý priestor v smere X.

Definujte a LabelFrame a nastavte jeho rodičovský prvok spolu s farbou pozadia, ktorú by mal mať. Použi miesto() funkciu usporiadať na zadaných súradniciach. Okrem toho prejdite na šírku a výšku rámu.

 title = Menovka (self.root, text="Aplikácia správ", font=("Times New Roman", 28, "tučné"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.miesto (x=20, y=80, šírka=215, výška=210)

Definujte cyklus for, ktorý prechádza cez dĺžku novinkyKat zoznam. Definujte tlačidlo v rámci definovanom skôr. Odovzdajte text, ktorý by sa mal zobraziť, a skonvertujte ho na veľké písmená. Zadajte šírku, hĺbku okraja, štýl písma a farbu pozadia tlačidiel. Použi mriežka správcu usporiadať tlačidlá v stĺpcovom formáte a pridať výplň v smere X a Y.

Na pripojenie tlačidla a oblasti správ použite metódu väzby. definuje, že Newsarea funkcia sa objaví po kliknutí ľavým tlačidlom myši. Pripojte tieto tlačidlá k newsCatButton zoznam definovaný skôr.

pre i v rozsah (len (self.newsCategory)):
b = Tlačidlo (F1, text=self.newsCategory[i].upper(), width=15, bd=3, font="arial 14 bold", bg='#c154c1')
b.mriežka (riadok=i, stĺpec=0, padx=10, pady=5)
b.bind('', seba. Newsarea)
self.newsCategoryButton.append (b)

Definujte rám a odovzdajte mu nadradený prvok, do ktorého ho chcete umiestniť, a hĺbku okraja, ktorú by mal mať. Usporiadajte ho na určených súradniciach a odovzdajte relatívnu výšku a šírku. Definujte zvislý posuvník pomocou orientovať sa parameter a umiestnite ho do tohto rámca.

Definujte textový widget. Odovzdajte rodičovský prvok ako tento rám spolu so štýlom písma a farbou pozadia, ktorú by mal mať. Pri nastavení hodnoty yscrollcommand ako scroll_y.set získa aktuálnu polohu posúvača pri interakcii používateľa.

 F2 = Rám (self.root, bd=3)
F2.miesto (x=260, y=80, relwidth=0.7, reheight=0.8)
scroll_y = posuvník (F2, orient=VERTICAL)
self.txtarea = Text (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "tučné"), bg='#fc6c85')

Použi balenie() možnosť výplne umiestniť posúvač na pravú stranu rámu a zaberať celý priestor v smere Y. Pri nastavení parametra príkazu ako txtarea.yview, pohyb posúvača sa prepojí s funkciami nahor a nadol. Keď teda používateľ interaguje s posúvačom, zobrazenie textovej oblasti sa zodpovedajúcim spôsobom zmení.

Použi vložiť() metóda požiadať používateľa, aby vybral kategóriu a umiestnil ju na koniec akéhokoľvek existujúceho textu. Použi balenie() spôsob, ako požiadať textový widget, aby zaujal miesto v smere X a Y a v prípade potreby mu priradil ďalší priestor pomocou expandovať parameter.

 scroll_y.pack (strana=RIGHT, fill=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Vyberte kategóriu:")
self.txtarea.pack (fill=OBJE, expand=1)

Extrahujte novinky z odpovede API

Definujte funkciu, Newsarea() ktorý akceptuje aktuálnu inštanciu triedy a udalosť tlačidla. Kategóriu správ, ktorú používateľ vybral, zadajte malými písmenami a uložte ju. Odovzdajte požadované parametre do základnej adresy URL a odstráňte akýkoľvek predtým prítomný text od prvého indexu po posledný. Vložte čiaru na ohraničenie.

Definujte a skúste zablokovať a odoslať požiadavku HTTP GET na server definovaný v základnej URL. Preveďte odpoveď do formátu JSON a extrahujte obsah, ktorý má kľúč ako články a uložte ho do premennej.

defNewsarea(ja, udalosť):
typ = event.widget.cget('text').nižšia()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={type}&apiKey=' + apiKey
self.txtarea.delete("1.0", KONIEC)
self.txtarea.insert (END, "\n")
skúste:
články = (requests.get (BASE_URL).json())['články']

Ak počet načítaných článkov nie je nula, spustite cyklus a vložte články jeden po druhom do textového widgetu. Zobrazte názov, za ktorým nasleduje popis, obsah a adresa URL v samostatných riadkoch. Vložte dve čiary na ohraničenie. Ak je počet článkov nula, zobrazí sa, že pre danú kategóriu nie sú dostupné žiadne novinky.

Ak blok try zlyhá, použite blok výnimiek na zobrazenie príslušnej chybovej správy používateľom.

ak (články != 0):
pre i v rozsah (len (články)):
self.txtarea.insert (END, f"{články[i]['názov']}\n")
self.txtarea.insert (END, f"{články[i]['popis']}\n")
self.txtarea.insert (END, f"{články[i]['obsah']}\n")
self.txtarea.insert (END, f"čítať viac...{články[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
inak:
self.txtarea.insert (END, "Nie sú k dispozícii žiadne novinky")
okrem Výnimka ako e:
messagebox.showerror('CHYBA', „Prepáčte, narazili sme na nejaké problémy. Skontrolujte internetové pripojenie a skúste to znova.")

Vytvorte inštanciu triedy a inicializujte ju. The mainloop() funkcia hovorí Pythonu, aby spustil slučku udalostí Tkinter a počúval udalosti, kým nezatvoríte okno.

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

Zložte celý kód a vaša aplikácia je pripravená na zobrazovanie noviniek podľa rôznych kategórií.

Výstup aplikácie Správy

Pri spustení programu sa v textovej oblasti zobrazí výzva na výber kategórie. Po kliknutí na ktorékoľvek z tlačidiel sa zobrazia novinky s popisom, obsahom a odkazom (ak existuje) pre danú kategóriu oddelené dvoma riadkami.

Užitočné rozhrania API pre váš projekt Python

Rozhrania API sú veľmi užitočné na integráciu nových aplikácií s existujúcimi softvérovými systémami. Môžete použiť OpenWeatherMap API na získavanie informácií o počasí v reálnom čase z akejkoľvek oblasti a Google Maps API na začlenenie máp do vašej webovej aplikácie. Úlohy GitHub môžete automatizovať prostredníctvom rozhrania GitHub API a na integráciu videokonferencií môžete použiť rozhranie Zoom API.

Môžete tiež využiť silu ChatGPT z vašich vlastných aplikácií pomocou OpenAI API a vytvoriť niekoľko fascinujúcich aplikácií poháňaných AI.