Opi luomaan oma uutissovelluksesi Pythonilla ja Tkinter-kirjastolla.

Tässä nopeatempoisessa maailmassa on erittäin tärkeää pysyä ajan tasalla viimeisimmistä uutisista. Rakenna ikioma uutissovelluksesi, joka tuo sinulle uutisia eri luokista, kuten viihteestä, urheilusta ja teknologiasta, saatavilla millä tahansa alustalla aivan sormiesi ulottuvilla.

Kehität tämän sovelluksen käyttämällä Tkinteriä, Pythonin vakiokäyttöliittymäkirjastoa, ja käytät sitä News API: lla, joka saa artikkeleita yli 80 000 lähteestä.

Asenna tkinter ja pyytää moduulit

Tkinter on monikäyttöinen, yksinkertainen ja käyttäjäystävällinen moduuli jonka avulla voit luoda nopeasti graafisia käyttöliittymiä. Jotkut Tkinterillä luotavissa olevissa sovelluksissa on musiikkisoitin, kalenteri, painonmuuntotyökalu, sanasekoituspeli ja niin edelleen.

Asentaa tkinter suorita järjestelmässäsi seuraava komento terminaalissa:

pip asennus tkinter

The pyynnöt moduuli helpottaa HTTP-pyyntöjen tekemistä. Tämän kanssa, voit kehittää mielenkiintoisia sovelluksia, kuten verkkosivuston tilantarkistusta

instagram viewer
, verkkokaavin, osakemarkkinoiden valvontabotti ja verkkosivuston suorituskyvyn testaaja. Asenna pyyntömoduuli avaamalla pääte ja suorittamalla seuraava komento:

pip-asennuspyynnöt

Löydät Uutissovelluksen koko lähdekoodin Pythonilla tästä GitHub-arkisto.

Luo News API -avain

Aloita tuomalla tarvittavat kirjastot. Ilmoittautuminen osoitteessa News API ja luo API-avaimesi. Ilmaisella kehittäjätilillä voit lähettää jopa 100 pyyntöä päivittäin, mikä on hienoa testata ja aloittaa. Tallenna API muuttujaan, jota käytät myöhemmin perus-URL-osoitteen kanssa hakeaksesi suosituimmat otsikot maasi mukaan.

alkaen tkinter tuonti *
alkaen tkinter tuonti viestilaatikko
tuonti pyynnöt

apiKey = "YOUR_API_KEY"

Määritä sovelluksen rakenne

Määritä luokka, NewsApp. Viittaus apiKey ja tyyppi muuttujia maailmanlaajuisesti. Määritä luokan objekti ja alusta juuriikkuna. Aseta hakemuksesi mitat ja otsikko. Määrittele kaksi luetteloa. Käytät ensimmäistä luetteloa painikkeiden määrittämiseen ja toista uutisluokkien määrittämiseen, jotka haluat näyttää sovelluksessasi.

luokkaaNewsApp:
maailmanlaajuisesti apiKey, kirjoita
def__sen sisällä__(itse, juuri):
self.root = juuri
self.root.geometry("1000x650")
self.root.title("Uutissovellus")
self.newsCategoryButton = []
self.newsCategory = ["yleinen", "viihde", "Urheilu", "tekniikka"]

Määritä tunniste, joka toimii hakemuksesi otsikkona. Välitä pääelementti, johon haluat sijoittaa sen, teksti, jonka sen pitäisi näyttää, kirjasintyyli, täyttö ja taustaväri. Käytä pakkaus() täyttövaihtoehto, jotta etiketti vie koko tilan X-suunnassa.

Määrittele a LabelFrame ja aseta sen pääelementti sekä taustaväri, jonka sillä pitäisi olla. Käytä paikka() toiminto järjestää sen tiettyihin koordinaatteihin. Ohita lisäksi kehyksen leveys ja korkeus.

 title = Label (self.root, text="Uutissovellus", font =("Times New Roman", 28, "lihavoitu"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.paikka (x=20, y=80, leveys=215, korkeus =210)

Määritä for-silmukka, joka kulkee silmukan pituuden läpi uutisetCat lista. Määritä painike aiemmin määritellyssä kehyksessä. Välitä teksti, jonka sen pitäisi näyttää, ja muunna se isoiksi kirjaimille. Ohita painikkeiden leveys, reunuksen syvyys, kirjasintyyli ja taustaväri. Käytä ruudukko Manager järjestää painikkeet sarakemuotoon ja lisätä täyttöjä X- ja Y-suuntiin.

Käytä sidontamenetelmää liittääksesi painikkeen ja uutisalueen. määrittelee, että Newsarea toiminto tapahtuu käyttäjän hiiren vasemmalla napsautuksella. Liitä nämä painikkeet uutisetCatButton aiemmin määritelty lista.

varten i sisään alue (len (self.newsCategory)):
b = Painike (F1, text=self.newsCategory[i].upper(), leveys=15, bd=3, font="arial 14 lihavoitu", bg='#c154c1')
b.grid (rivi=i, sarake=0, padx=10, pady=5)
b.bind('', itse. uutisalue)
self.newsCategoryButton.append (b)

Määritä kehys ja välitä sille pääelementti, johon haluat sijoittaa sen, sekä reunuksen syvyys, jonka sillä pitäisi olla. Järjestä se määritettyihin koordinaatteihin ja välitä suhteellinen korkeus ja leveys. Määritä pystysuora vierityspalkki käyttämällä orientoida parametri ja aseta se tähän kehykseen.

Määritä tekstiwidget. Välitä yläelementti tässä kehyksessä fonttityylin ja taustavärin kanssa. Asettaessasi arvoa yscrollcommand kuten scroll_y.set se saa vierityspalkin nykyisen sijainnin käyttäjän vuorovaikutuksessa.

 F2 = Kehys (self.root, bd=3)
F2.paikka (x=260, y=80, relwidth=0.7, releight=0.8)
scroll_y = vierityspalkki (F2, orient=VERTICAL)
self.txtarea = Teksti (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "lihavoitu"), bg='#fc6c85')

Käytä pakkaus() täyttövaihtoehto asettaaksesi vierityspalkin kehyksen oikealle puolelle ja täyttämään koko tilan Y-suunnassa. Asettaessasi komentoparametrin muodossa txtarea.yview, vierityspalkin liike linkitetään ylös ja alas -toimintoihin. Joten kun käyttäjä on vuorovaikutuksessa vierityspalkin kanssa, tekstialueen näkymät muuttuvat vastaavasti.

Käytä insert() tapa pyytää käyttäjää valitsemaan luokka ja sijoittamaan se olemassa olevan tekstin loppuun. Käytä pakkaus() menetelmä pyytää tekstiwidgetiä ottamaan tilaa X- ja Y-suunnassa ja antamaan tarvittaessa lisätilaa käyttämällä laajentaa parametri.

 scroll_y.pack (sivu = OIKEA, täyttö = Y)
scroll_y.config (komento=self.txtarea.yview)
self.txtarea.insert (END,"Valitse kategoria:")
self.txtarea.pack (fill=BOTH, expand=1)

Pura uutisia API-vastauksesta

Määritä funktio, Uutisalue() joka hyväksyy luokan nykyisen esiintymän ja painiketapahtuman. Välitä käyttäjän valitsema uutisluokka pienillä kirjaimilla ja tallenna se. Välitä tarvittavat parametrit perus-URL-osoitteeseen ja poista kaikki aiemmin olemassa oleva teksti ensimmäisestä hakemistosta viimeiseen. Lisää viiva rajausta varten.

Määrittele a yrittää estää ja lähettää HTTP GET -pyynnön perus-URL-osoitteessa määritettyyn palvelimeen. Muunna vastaus JSON-muotoon ja pura sisältö, jolla on avain artikkeleita ja tallenna se muuttujaan.

defNewsarea(itse, tapahtuma):
type = event.widget.cget('teksti').alempi()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={tyyppi}&apiKey=' + apiKey
self.txtarea.delete("1.0", END)
self.txtarea.insert (END, "\n")
yrittää:
artikkelit = (requests.get (BASE_URL).json())["artikkelit"]

Jos haettujen artikkelien määrä ei ole nolla, suorita silmukka ja lisää artikkelit yksitellen tekstiwidgetiin. Näytä otsikko ja sen jälkeen kuvaus, sisältö ja URL-osoite erillisillä riveillä. Lisää kaksi riviä rajaamaan. Jos artikkeleiden määrä on nolla, näytä, että kyseiselle kategorialle ei ole saatavilla uutisia.

Jos try-lohko epäonnistuu, käytä poikkeuslohkoa näyttääksesi asianmukaisen virheilmoituksen käyttäjille.

jos (artikkelit != 0):
varten i sisään alue (len (artikkelit)):
self.txtarea.insert (END, f"{artikkelit[i]['titteli']}\n")
self.txtarea.insert (END, f"{artikkelit[i]['kuvaus']}\n")
self.txtarea.insert (END, f"{artikkelit[i]['sisältö']}\n")
self.txtarea.insert (END, f"lue lisää...{artikkelit[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
muu:
self.txtarea.insert (END, "Uutisia ei ole saatavilla")
paitsi Poikkeus kuten e:
messagebox.showerror('VIRHE', "Anteeksi, törmäsimme joihinkin ongelmiin. Tarkista internetyhteys ja yritä uudelleen.")

Luo luokasta esiintymä ja alusta se. The mainloop() -toiminto käskee Pythonia suorittamaan Tkinterin tapahtumasilmukan ja kuuntelemaan tapahtumia, kunnes suljet ikkunan.

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

Yhdistä kaikki koodi ja sovelluksesi on valmis näyttämään uutisia eri luokkien mukaan.

Uutissovelluksen tulos

Ohjelmaa suoritettaessa tekstialue pyytää valitsemaan luokan. Kun napsautat mitä tahansa painiketta, se näyttää uutiset, joissa on kuvaus, sisältö ja linkki (jos sellainen on) kyseiselle luokalle erotettuna kahdella rivillä.

Hyödyllisiä sovellusliittymiä Python-projektillesi

API: t ovat erittäin käteviä integroitaessa uusia sovelluksia olemassa oleviin ohjelmistojärjestelmiin. Voit käyttää OpenWeatherMap APIa reaaliaikaisten säätietojen hakemiseen mistä tahansa alueesta ja Google Maps API: n avulla karttojen sisällyttämiseen verkkosivustosi sovellukseesi. Voit automatisoida GitHub-tehtävät GitHub API: n kautta ja käyttää Zoom API: ta videoneuvottelujen integrointiin.

Voit myös käyttää ChatGPT: n tehoa omissa sovelluksissasi käyttämällä OpenAI: n APIa ja luoda kiehtovia tekoälyllä varustettuja sovelluksia.