Uzziniet, kā izveidot savu Ziņu lietojumprogrammu, izmantojot Python un Tkinter bibliotēku.

Šajā straujajā pasaulē ir ļoti svarīgi būt informētam par jaunākajām ziņām. Izveidojiet savu Ziņu lietojumprogrammu, kas sniedz jums ziņas par dažādām kategorijām, piemēram, izklaidi, sportu un tehnoloģijām, kas ir pieejamas jebkurā platformā.

Jūs izstrādāsit šo lietojumprogrammu, izmantojot Python standarta GUI bibliotēku Tkinter, un aktivizēsit to, izmantojot News API, kas iegūst rakstus no vairāk nekā 80 000 avotiem.

Instalējiet tkinter un pieprasījumu moduļus

Tkinter ir vairāku platformu, vienkāršs un lietotājam draudzīgs modulis ko varat izmantot, lai ātri izveidotu grafiskās lietotāja saskarnes. Daži no lietojumprogrammās, kuras varat izveidot, izmantojot Tkinter, ir iekļauts mūzikas atskaņotājs, kalendārs, svara konvertēšanas rīks, vārdu sajaukšanas spēle un tā tālāk.

Lai instalētu tkinter savā sistēmā terminālī palaidiet šādu komandu:

pip instalēt tkinter

The pieprasījumus modulis atvieglo HTTP pieprasījumu veikšanu. Ar šo,

instagram viewer
varat izstrādāt interesantas lietojumprogrammas, piemēram, vietnes statusa pārbaudītāju, tīmekļa skrāpis, akciju tirgus monitora robots un vietnes veiktspējas testeris. Lai instalētu pieprasījumu moduli, atveriet termināli un palaidiet šādu komandu:

pip instalēšanas pieprasījumi

Šajā sadaļā varat atrast visu lietojumprogrammas Ziņas avota kodu, izmantojot Python GitHub repozitorijs.

Ģenerējiet ziņu API atslēgu

Sāciet, importējot nepieciešamās bibliotēkas. Pieteikšanās plkst Ziņu API un ģenerējiet savu API atslēgu. Izmantojot bezmaksas izstrādātāja kontu, katru dienu varat nosūtīt līdz 100 pieprasījumiem, kas ir lieliski, lai pārbaudītu un sāktu darbu. Saglabājiet API mainīgajā, ko vēlāk izmantosit kopā ar pamata URL, lai iegūtu populārākos virsrakstus atbilstoši savai valstij.

no tkinter imports *
no tkinter imports ziņojumu kastīte
imports pieprasījumus

apiKey = 'YOUR_API_KEY'

Definējiet lietotnes struktūru

Definējiet klasi, NewsApp. Atsauce uz apiKey un veids mainīgie globāli. Definējiet klases objektu un inicializējiet saknes logu. Iestatiet pieteikuma izmērus un nosaukumu. Definējiet divus sarakstus; pirmo sarakstu izmantosit, lai definētu pogas, bet otro, lai noteiktu ziņu kategorijas, kuras vēlaties parādīt savā lietojumprogrammā.

klasēNewsApp:
globāli apiKey, ierakstiet
def__tajā__(sevis, sakne):
self.root = sakne
self.root.geometry("1000x650")
self.root.title("Ziņu aplikācija")
self.newsCategoryButton = []
self.newsCategory = ["vispārīgi", "izklaide", "sports", "tehnoloģija"]

Definējiet etiķeti, kas darbojas kā jūsu pieteikuma nosaukums. Nododiet vecākelementu, kurā vēlaties to ievietot, tekstu, kas tam jāparāda, fonta stilu, polsterējumu un fona krāsu, kurai tam vajadzētu būt. Izmantojiet komplekts() aizpildīšanas opcija, lai etiķete aizņemtu visu vietu X virzienā.

Definējiet a LabelFrame un iestatiet tā vecāku elementu kopā ar fona krāsu, kas tam vajadzētu būt. Izmantojiet vieta () funkcija organizēt to noteiktās koordinātēs. Turklāt nododiet rāmja platumu un augstumu.

 title = Etiķete (self.root, text="Ziņu aplikācija", font=("Jaunie romiešu laiki", 28, "drosmīgs"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.vieta (x=20, y=80, platums=215, augstums=210)

Definējiet for cilpu, kas iet cauri cilpai ziņasKaķis sarakstu. Definējiet pogu iepriekš definētajā rāmī. Nododiet tekstu, kas tam jāparāda, un pārveidojiet to lielos burtos. Nododiet pogu platumu, apmales dziļumu, fonta stilu un fona krāsu. Izmantojiet režģis pārvaldnieku, lai sakārtotu pogas kolonnu formātā un pievienotu polsterējumu X un Y virzienos.

Izmantojiet saistīšanas metodi, lai pievienotu pogu un ziņu apgabalu. definē, ka Newsarea funkcija tiks parādīta, lietotājam noklikšķinot ar peles kreiso taustiņu. Pievienojiet šīs pogas ziņasCatButton iepriekš definēts saraksts.

priekš i iekšā diapazons (len (self.newsCategory)):
b = poga (F1, text=self.newsCategory[i].upper(), platums=15, bd=3, fonts="ariāls 14 treknrakstā", bg='#c154c1')
b.režģis (rinda=i, kolonna=0, padx=10, pady=5)
b.bind('', sevi. ziņu apgabals)
self.newsCategoryButton.append (b)

Definējiet rāmi un nododiet tam vecākelementu, kurā vēlaties to ievietot, un apmales dziļumu, kuram tam vajadzētu būt. Sakārtojiet to noteiktās koordinātēs un nododiet relatīvo augstumu un platumu. Definējiet vertikālo ritjoslu, izmantojot orientēties parametru un ievietojiet to šajā rāmī.

Definējiet teksta logrīku. Nododiet vecāku elementu kā šo rāmi kopā ar fonta stilu un fona krāsu, kas tam vajadzētu būt. Iestatot vērtību yscrollcommandscroll_y.set lietotāja mijiedarbībā tas iegūst ritjoslas pašreizējo pozīciju.

 F2 = rāmis (self.root, bd=3)
F2.vieta (x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = ritjosla (F2, orient=VERTICAL)
self.txtarea = Teksts (F2, yscrollcommand=scroll_y.set, font=("Jaunie romiešu laiki", 15, "drosmīgs"), bg='#fc6c85')

Izmantojiet komplekts() aizpildīšanas opcija, lai novietotu ritjoslu rāmja labajā pusē un aizņemtu visu vietu Y virzienā. Iestatot komandas parametru kā txtarea.yview, ritjoslas kustība tiek saistīta ar augšup un lejup funkcijām. Tātad, kad lietotājs mijiedarbojas ar ritjoslu, teksta apgabala skati attiecīgi mainās.

Izmantojiet ievietot () metode, lai lūgtu lietotājam atlasīt kategoriju un ievietot to jebkura esošā teksta beigās. Izmantojiet komplekts() metode, lai lūgtu teksta logrīkam aizņemt vietu X un Y virzienā un, ja nepieciešams, piešķirt papildu atstarpi, izmantojot paplašināt parametrs.

 scroll_y.pack (side=RIGHT, fill=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Izvēlies kategoriju:")
self.txtarea.pack (fill=BOTH, expand=1)

Izņemiet ziņas no API atbildes

Definējiet funkciju, Newsarea () kas pieņem pašreizējo klases gadījumu un pogas notikumu. Nododiet lietotāja izvēlēto ziņu kategoriju ar mazajiem burtiem un saglabājiet to. Nododiet nepieciešamos parametrus pamata vietrādim URL un izdzēsiet visu iepriekš esošo tekstu no pirmā rādītāja līdz pēdējam. Ievietojiet līniju demarkācijai.

Definējiet a mēģināt bloķēt un nosūtīt HTTP GET pieprasījumu serverim, kas definēts bāzes URL. Konvertējiet atbildi JSON formātā un izņemiet saturu, kuram ir atslēga kā rakstus un saglabājiet to mainīgajā.

defNewsarea(es, notikums):
type = event.widget.cget('teksts').lower()
BASE_URL = f' http://newsapi.org/v2/top-headlines? valsts=in&kategorija={tips}&apiKey=' + apiKey
self.txtarea.delete("1.0", END)
self.txtarea.insert (END, "\n")
mēģināt:
raksti = (requests.get (BASE_URL).json())["raksti"]

Ja ienesto rakstu skaits nav nulle, palaidiet cilpu un ievietojiet rakstus pa vienam teksta logrīkā. Parādiet virsrakstu, kam seko apraksts, saturs un URL atsevišķās rindās. Ievietojiet divas līnijas demarkācijai. Ja rakstu skaits ir nulle, parādiet, ka šai konkrētajai kategorijai ziņas nav pieejamas.

Ja mēģinājuma bloks neizdodas, izmantojiet izņēmumu bloku, lai lietotājiem parādītu atbilstošu kļūdas ziņojumu.

ja (raksti != 0):
priekš i iekšā diapazons (len (raksti)):
self.txtarea.insert (END, f"{raksti[i]['nosaukums']}\n")
self.txtarea.insert (END, f"{raksti[i]['apraksts']}\n")
self.txtarea.insert (END, f"{raksti[i]['saturs']}\n")
self.txtarea.insert (END, f"lasīt vairāk...{raksti[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
cits:
self.txtarea.insert (END, "Nav pieejami jaunumi")
izņemot Izņēmums e:
messagebox.showerror('KĻŪDA', "Atvainojiet, mums radās dažas problēmas. Lūdzu, pārbaudiet interneta savienojumu un mēģiniet vēlreiz.")

Izveidojiet klases gadījumu un inicializējiet to. The mainloop() funkcija liek Python palaist Tkinter notikumu cilpu un klausīties notikumus, līdz aizverat logu.

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

Salieciet visu kodu, un jūsu lietojumprogramma ir gatava parādīt ziņas atbilstoši dažādām kategorijām.

Ziņu lietojumprogrammas izvade

Palaižot programmu, teksta apgabalā tiek prasīts atlasīt kategoriju. Noklikšķinot uz jebkuras pogas, tiek parādītas ziņas ar aprakstu, saturu un saiti (ja tāda ir) šai kategorijai, atdalītas ar divām rindām.

Noderīgas API jūsu Python projektam

API ir ļoti ērti, lai integrētu jaunas lietojumprogrammas ar esošajām programmatūras sistēmām. Varat izmantot OpenWeatherMap API, lai izgūtu reāllaika laikapstākļu informāciju par jebkuru apgabalu, un Google Maps API, lai iekļautu kartes jūsu vietnes lietojumprogrammā. Varat automatizēt GitHub uzdevumus, izmantojot GitHub API, un izmantot Zoom API, lai integrētu video konferences.

Varat arī izmantot ChatGPT jaudu no savām lietotnēm, izmantojot OpenAI API, un izveidot dažas aizraujošas ar AI darbināmas lietojumprogrammas.