Naučite se ustvariti svojo lastno aplikacijo News s Pythonom in knjižnico Tkinter.

V tem hitrem svetu je ključnega pomena, da ste na tekočem z najnovejšimi novicami. Zgradite svojo lastno aplikacijo za novice, ki vam posreduje novice v različnih kategorijah, kot so zabava, šport in tehnologija, dostopne na kateri koli platformi na dosegu roke.

To aplikacijo boste razvili z uporabo Tkinterja, standardne knjižnice grafičnega uporabniškega vmesnika za Python, in jo poganjali z uporabo News API-ja, ki pridobiva članke iz več kot 80.000 virov.

Namestite tkinter in zahtevajte module

Tkinter je večplatformski, preprost in uporabniku prijazen modul ki jih lahko uporabite za hitro ustvarjanje grafičnih uporabniških vmesnikov. Nekateri od aplikacije, ki jih lahko sestavite s Tkinterjem, vključujejo predvajalnik glasbe, koledar, orodje za pretvorbo teže, besedna igra in tako naprej.

Za namestitev tkinter v vašem sistemu zaženite naslednji ukaz v terminalu:

pip namestite tkinter

The zahteve modul olajša izdelavo zahtev HTTP. S tem,

instagram viewer
lahko razvijete zanimive aplikacije, kot je preverjanje statusa spletne strani, spletno strgalo, bot za spremljanje borze in preizkuševalec delovanja spletnega mesta. Če želite namestiti modul za zahteve, odprite terminal in zaženite naslednji ukaz:

zahteve za namestitev pip

Tukaj lahko najdete celotno izvorno kodo aplikacije News, ki uporablja Python Repozitorij GitHub.

Ustvari ključ API za novice

Začnite z uvozom zahtevanih knjižnic. Prijava na API za novice in ustvarite svoj ključ API. Z brezplačnim računom razvijalca lahko pošljete do 100 zahtev dnevno, kar je odlično za testiranje in začetek. API shranite v spremenljivko, ki jo boste pozneje uporabili z osnovnim URL-jem za pridobivanje glavnih naslovov glede na vašo državo.

od tkinter uvoz *
od tkinter uvoz sporočilno polje
uvoz zahteve

apiKey = 'VAŠ_API_KEY'

Določite strukturo aplikacije

Določite razred, NewsApp. Sklicevanje na apiKey in vrsta spremenljivke globalno. Definirajte predmet razreda in inicializirajte korensko okno. Nastavite dimenzije in naslov vaše aplikacije. Definirajte dva seznama, s prvim seznamom določite gumbe, z drugim pa določite kategorije novic, ki jih želite prikazati v svoji aplikaciji.

razredNewsApp:
globalno apiKey, tip
def__v__(jaz, koren):
self.root = koren
self.root.geometry('1000 x 650')
self.root.title("Aplikacija za novice")
self.newsCategoryButton = []
self.newsCategory = ["splošno", "zabava", "šport", "tehnologija"]

Določite oznako, ki deluje kot naslov vaše aplikacije. Posredujte nadrejeni element, v katerega ga želite postaviti, besedilo, ki ga mora prikazati, slog pisave, oblazinjenje in barvo ozadja, ki ga mora imeti. Uporabi paket() možnost zapolnitve, da nalepka zavzame ves prostor v smeri X.

Določite a LabelFrame in nastavite njegov nadrejeni element skupaj z barvo ozadja, ki naj bi ga imel. Uporabi mesto() funkcijo za organizacijo na določenih koordinatah. Poleg tega prenesite širino in višino okvirja.

 title = Oznaka (self.root, text="Aplikacija za novice", pisava=("times new roman", 28, "krepko"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.mesto (x=20, y=80, širina=215, višina=210)

Definirajte zanko for, ki teče skozi dolžino newsCat seznam. Definirajte gumb v okvirju, definiranem prej. Posredujte besedilo, ki naj bi bilo prikazano, in ga pretvorite v velike črke. Podajte širino, globino obrobe, slog pisave in barvo ozadja gumbov. Uporabi mreža upravitelja, da razporedi gumbe v obliki stolpcev in doda oblazinjenje v smereh X in Y.

Uporabite metodo povezovanja, da pritrdite gumb in območje novic. opredeljuje, da je Newsarea Funkcija se pojavi, ko uporabnik klikne levi gumb miške. Dodajte te gumbe k newsCatButton prej opredeljen seznam.

za jaz v obseg (len (self.newsCategory)):
b = Gumb (F1, text=self.newsCategory[i].upper(), width=15, bd=3, pisava="arial 14 krepko", bg='#c154c1')
b.grid (vrstica=i, stolpec=0, padx=10, pady=5)
b.bind('', sam. Newsarea)
self.newsCategoryButton.append (b)

Določite okvir in mu posredujte nadrejeni element, v katerega ga želite postaviti, ter globino obrobe, ki naj bi jo imel. Organizirajte ga na določenih koordinatah in posredujte relativno višino in širino. Določite navpični drsni trak z uporabo orientirati parameter in ga postavite v ta okvir.

Določite besedilni gradnik. Posredujte nadrejeni element kot ta okvir skupaj s slogom pisave in barvo ozadja, ki naj bi ga imel. Pri nastavitvi vrednosti ukaz yscroll kot scroll_y.set ob interakciji uporabnika pridobi trenutni položaj drsnega traku.

 F2 = Okvir (self.root, bd=3)
F2.mesto (x=260, y=80, relwidth=0.7, relativna višina=0.8)
scroll_y = Drsni trak (F2, orient=VERTICAL)
self.txtarea = Besedilo (F2, yscrollcommand=scroll_y.set, pisava=("times new roman", 15, "krepko"), bg='#fc6c85')

Uporabi paket() možnost zapolnitve, da postavite drsni trak na desno stran okvirja in zasedete celoten prostor v smeri Y. Pri nastavitvi ukaznega parametra kot txtarea.yview, se premikanje drsnega traku poveže s funkcijama gor in dol. Torej, ko uporabnik komunicira z drsnim trakom, se pogledi območja besedila ustrezno spremenijo.

Uporabi vstavi() metoda, da od uporabnika zahteva, da izbere kategorijo in jo umesti na konec obstoječega besedila. Uporabi paket() metodo, da od gradnika za besedilo zahtevate, da zavzame prostor v smeri X in Y in po potrebi dodeli dodaten prostor z uporabo razširiti parameter.

 scroll_y.pack (stran=DESNO, polnilo=Y)
scroll_y.config (ukaz=self.txtarea.yview)
self.txtarea.insert (KONEC,"Izberite kategorijo:")
self.txtarea.pack (fill=BOTH, expand=1)

Izvleček novic iz odziva API-ja

Definirajte funkcijo, Newsarea() ki sprejme trenutni primerek razreda in dogodek gumba. Prenesite kategorijo novice, ki jo je uporabnik izbral z malimi črkami, in jo shranite. Posredujte zahtevane parametre osnovnemu URL-ju in izbrišite vse prej prisotno besedilo od prvega indeksa do zadnjega. Vstavite črto za razmejitev.

Določite a poskusi blokirajte in pošljite zahtevo HTTP GET na strežnik, definiran v osnovnem URL-ju. Pretvorite odgovor v format JSON in ekstrahirajte vsebino, ki ima ključ kot članki in ga shrani v spremenljivko.

defNewsarea(jaz, dogodek):
vrsta = event.widget.cget('besedilo').spodnji()
BASE_URL = f' http://newsapi.org/v2/top-headlines? država=v&kategoriji={type}&apiKey=' + apiKey
self.txtarea.delete("1.0", KONEC)
self.txtarea.insert (KONEC, "\n")
poskusi:
članki = (requests.get (BASE_URL).json())['članki']

Če število pridobljenih člankov ni nič, zaženite zanko in vstavite članke enega za drugim v besedilni gradnik. Prikažite naslov, ki mu sledijo opis, vsebina in URL v ločenih vrsticah. Vstavite dve črti za razmejitev. Če je število člankov nič, prikaži, da za to kategorijo ni na voljo nobena novica.

Če poskusni blok ne uspe, uporabite blok izjeme za prikaz ustreznega sporočila o napaki uporabnikom.

če (članki != 0):
za jaz v obseg (len (članki)):
self.txtarea.insert (KONEC, f"{članki[i]['naslov']}\n")
self.txtarea.insert (KONEC, f"{članki[i]['opis']}\n")
self.txtarea.insert (KONEC, f"{članki[i]['vsebina']}\n")
self.txtarea.insert (KONEC, f"preberi več ...{članki[i]['url']}\n")
self.txtarea.insert (KONEC, "\n")
self.txtarea.insert (KONEC, "\n")
drugače:
self.txtarea.insert (KONEC, "Ni novic na voljo")
razen Izjema kot e:
messagebox.showerror('NAPAKA', »Oprostite, naleteli smo na nekaj težav. Preverite internetno povezavo in poskusite znova.")

Ustvarite primerek razreda in ga inicializirajte. The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke, dokler ne zaprete okna.

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

Sestavite vso kodo in vaša aplikacija je pripravljena za prikaz novic glede na različne kategorije.

Izhod aplikacije News

Ko zaženete program, besedilno območje zahteva izbiro kategorije. Ob kliku katerega koli gumba prikaže novico z opisom, vsebino in povezavo (če obstaja) za to kategorijo, ločeno z dvema vrsticama.

Uporabni API-ji za vaš projekt Python

API-ji so zelo priročni za integracijo novih aplikacij z obstoječimi programskimi sistemi. Uporabite lahko OpenWeatherMap API za pridobivanje vremenskih informacij v realnem času za katero koli območje in Google Maps API za vključitev zemljevidov v vašo spletno aplikacijo. Opravila GitHub lahko avtomatizirate prek API-ja GitHub in uporabite API Zoom za integracijo videokonferenc.

Moč ChatGPT lahko uporabite tudi v svojih aplikacijah z API-jem OpenAI in ustvarite nekaj fascinantnih aplikacij, ki jih poganja AI.