Siit saate teada, kuidas luua Pythoni ja Tkinteri teegi abil oma uudisterakendus.

Selles kiire tempoga maailmas on viimaste uudistega kursis olemine ülioluline. Looge oma uudisterakendus, mis pakub teile erinevate kategooriate uudiseid, nagu meelelahutus, sport ja tehnoloogia, mis on saadaval mis tahes platvormil otse teie käeulatuses.

Te arendate seda rakendust Pythoni standardse GUI teegi Tkinteri abil ja toite selle News API abil, mis hangib artikleid enam kui 80 000 allikast.

Installige tkinter ja taotlege mooduleid

Tkinter on platvormideülene, lihtne ja kasutajasõbralik moodul mille abil saate kiiresti luua graafilisi kasutajaliideseid. Mõned rakendused, mida saate Tkinteri abil luua, hõlmavad muusikapleierit, kalender, kaalu teisendamise tööriist, sõnade segamise mäng ja nii edasi.

Paigaldama tkinter oma süsteemis käivitage terminalis järgmine käsk:

pip install tkinter

The taotlusi moodul muudab HTTP-päringute tegemise lihtsamaks. Sellega, saate arendada huvitavaid rakendusi, näiteks veebisaidi olekukontrolli

instagram viewer
, veebikaabits, aktsiaturu jälgimise robot ja veebisaidi jõudluse tester. Taotluste mooduli installimiseks avage terminal ja käivitage järgmine käsk:

pip installitaotlused

Siit leiate Pythoni abil rakenduse News kogu lähtekoodi GitHubi hoidla.

Looge Newsi API võti

Alustage vajalike teekide importimisega. Registreeruge aadressil Uudiste API ja genereerige oma API võti. Tasuta arendajakontoga saate iga päev saata kuni 100 päringut, mis on suurepärane testimiseks ja alustamiseks. Salvestage API muutujas, mida kasutate hiljem koos põhi-URL-iga, et tuua oma riigile vastavad populaarsed pealkirjad.

alates tkinter importida *
alates tkinter importida sõnumikast
importida taotlusi

apiKey = „YOUR_API_KEY”

Määratlege rakenduse struktuur

Määratlege klass, NewsApp. Viidake apiKey ja tüüp muutujad globaalselt. Määratlege klassi objekt ja lähtestage juuraken. Määrake oma rakenduse mõõtmed ja pealkiri. Määratlege kaks loendit. Esimest loendit kasutate nuppude ja teist uudiste kategooriate määratlemiseks, mida soovite oma rakenduses kuvada.

klassNewsApp:
globaalne apiKey, tüüp
def__selles__(ise, juur):
ise.juur = juur
self.root.geometry("1000x650")
self.root.title("Uudiste rakendus")
self.newsCategoryButton = []
self.newsCategory = ["üldine", "meelelahutus", "sport", "tehnoloogia"]

Määrake silt, mis toimib teie rakenduse pealkirjana. Edastage ülemelement, millesse soovite selle paigutada, tekst, mida see peaks kuvama, fondi stiil, polsterdus ja taustavärv. Kasuta pakk () täitmise suvand, et silt hõivaks kogu ruumi X-suunas.

Määratlege a LabelFrame ja määrake selle emaelement koos taustavärviga, mis sellel peaks olema. Kasuta koht () funktsioon selle korraldamiseks kindlaksmääratud koordinaatidel. Lisaks edastage raami laius ja kõrgus.

 title = Silt (self.root, text="Uudiste rakendus", font=("Times New Roman", 28, "julge"), pady=2, bg='#ff007f'.pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.koht (x=20, y=80, laius=215, kõrgus =210)

Määrake for-silmus, mis kulgeb läbi ahela pikkuse uudisedKass nimekirja. Määratlege nupp varem määratletud raamis. Edastage kuvatav tekst ja teisendage see suurtähtedeks. Edastage nuppude laius, äärise sügavus, fondi stiil ja taustavärv. Kasuta võre haldur, et korraldada nupud veeruvormingus ja lisada polsterdus X- ja Y-suunas.

Kasutage nupu ja uudisteala kinnitamiseks sidumismeetodit. määratleb, et Uudisteala funktsioon toimub kasutaja hiire vasaku klõpsuga. Lisage need nupud uudisedCatButton varem määratletud loend.

jaoks i sisse vahemik (len (self.newsCategory)):
b = nupp (F1, text=self.newsCategory[i].upper(), laius=15, bd=3, font="arial 14 paksus kirjas", bg='#c154c1')
b.grid (rida=i, veerg=0, padx=10, pady=5)
b.bind('', ise. uudisteala)
self.newsCategoryButton.append (b)

Määrake raam ja edastage sellele põhielement, millesse soovite selle paigutada, ja äärise sügavus, mis sellel peaks olema. Korraldage see määratud koordinaatidel ja edastage suhteline kõrgus ja laius. Määrake vertikaalne kerimisriba kasutades orienteeruda parameeter ja asetage see sellesse raami.

Määratlege tekstividin. Edastage põhielement selle raamina koos fondi stiili ja taustavärviga, mis sellel peaks olema. Väärtuse määramisel yscrollcommand nagu scroll_y.set see saab kasutaja suhtlemisel kerimisriba praeguse asukoha.

 F2 = raam (self.root, bd=3)
F2.koht (x=260, y=80, relwidth=0.7, reheight=0.8)
scroll_y = kerimisriba (F2, orient=VERTICAL)
self.txtarea = Tekst (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "julge"), bg='#fc6c85')

Kasuta pakk () täitmisvalik, et asetada kerimisriba raami paremale küljele ja hõivata kogu ruumi Y-suunas. Käsu parameetri määramisel kui txtarea.yview, seotakse kerimisriba liikumine üles ja alla funktsioonidega. Seega, kui kasutaja kasutab kerimisriba, muutuvad tekstiala vaated vastavalt.

Kasuta insert () meetod, et paluda kasutajal kategooria valida ja paigutada see olemasoleva teksti lõppu. Kasuta pakk () meetod, et paluda tekstividinal võtta X- ja Y-suunas ruumi ning määrata vajadusel lisaruumi, kasutades laiendada parameeter.

 scroll_y.pack (külg=PAREM, täitmine=Y)
scroll_y.config (käsk=self.txtarea.yview)
self.txtarea.insert (END,"Vali kategooria:")
self.txtarea.pack (fill=MÕLEMAD, laienda=1)

Väljavõte API vastusest uudised

Määratlege funktsioon, Uudisteala() mis aktsepteerib klassi praegust eksemplari ja nupusündmust. Edastage kasutaja valitud uudiste kategooria väiketähtedega ja salvestage see. Edastage nõutud parameetrid baas-URL-ile ja kustutage kogu varem olemasolev tekst esimesest registrist viimaseni. Sisestage rida piiritlemiseks.

Määratlege a proovi blokeerida ja saata HTTP GET-päring baas-URL-is määratletud serverisse. Teisendage vastus JSON-vormingusse ja ekstraheerige sisu, millel on võti artiklid ja salvestage see muutujasse.

defUudisteala(ise, sündmus):
type = event.widget.cget('tekst').lower()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={tüüp}&apiKey=' + apiKey
self.txtarea.delete("1.0", LÕPP)
self.txtarea.insert (END, "\n")
proovi:
artiklid = (requests.get (BASE_URL).json())['artiklid']

Kui toodud artiklite arv ei ole null, käivitage tsükkel ja sisestage artiklid ükshaaval tekstividinasse. Kuva pealkiri, millele järgneb kirjeldus, sisu ja URL eraldi ridadel. Sisestage piiritlemiseks kaks rida. Kui artiklite arv on null, kuvage, et selle konkreetse kategooria kohta pole uudiseid saadaval.

Kui prooviplokk ebaõnnestub, kasutage erandiplokki, et kuvada kasutajatele vastav tõrketeade.

kui (artiklid != 0):
jaoks i sisse vahemik (len (artiklid)):
self.txtarea.insert (END, f"{artiklid[i]["tiitel"]}\n")
self.txtarea.insert (END, f"{artiklid[i]["kirjeldus"]}\n")
self.txtarea.insert (END, f"{artiklid[i]['sisu']}\n")
self.txtarea.insert (END, f"loe edasi...{artiklid[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
muidu:
self.txtarea.insert (END, "Uudised pole saadaval")
välja arvatud Erand nagu e:
messagebox.showerror('VIGA', „Vabandust, meil tekkisid mõned probleemid. Kontrollige Interneti-ühendust ja proovige uuesti.")

Looge klassi eksemplar ja lähtestage see. The mainloop() funktsioon käsib Pythonil käivitada Tkinteri sündmusetsükli ja kuulata sündmusi, kuni sulgete akna.

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

Pange kogu kood kokku ja teie rakendus on valmis kuvama uudiseid vastavalt erinevatele kategooriatele.

Uudisterakenduse väljund

Programmi käivitamisel palub tekstiala valida kategooria. Mis tahes nupul klõpsamisel kuvatakse uudised koos kirjelduse, sisu ja selle kategooria lingiga (kui see on olemas), eraldatuna kahe reaga.

Kasulikud API-d teie Pythoni projekti jaoks

API-d on ülimugavad uute rakenduste integreerimiseks olemasolevate tarkvarasüsteemidega. Saate kasutada OpenWeatherMap API-d, et hankida reaalajas ilmateavet mis tahes piirkonna kohta ja Google Mapsi API-d, et lisada kaardid oma veebisaidi rakendusse. Saate GitHubi ülesandeid automatiseerida GitHubi API kaudu ja kasutada Zoom API-t videokonverentside integreerimiseks.

ChatGPT võimsust saate kasutada ka oma rakendustes, kasutades OpenAI API-d, ja luua põnevaid tehisintellektil põhinevaid rakendusi.