Aflați cum să vă creați propria aplicație Știri cu Python și biblioteca Tkinter.
În această lume în ritm rapid, este crucial să fii la curent cu cele mai recente știri. Creați-vă propria aplicație Știri care vă oferă știri din diferite categorii, cum ar fi divertisment, sport și tehnologie, accesibilă pe orice platformă, chiar la îndemână.
Veți dezvolta această aplicație folosind Tkinter, biblioteca standard GUI pentru Python, și o veți alimenta folosind API-ul News, care primește articole din peste 80.000 de surse.
Instalați tkinter și solicită module
Tkinter este un modul multiplatform, simplu și ușor de utilizat pe care le puteți utiliza pentru a crea rapid interfețe grafice cu utilizatorul. Unele dintre aplicațiile pe care le puteți crea folosind Tkinter includ un player de muzică, calendar, instrument de conversie a greutății, joc de amestec de cuvinte și așa mai departe.
A instala tkinter în sistemul dvs., executați următoarea comandă în terminal:
pip install tkinter
The cereri modul facilitează efectuarea de solicitări HTTP. Cu asta,
puteți dezvolta aplicații interesante, cum ar fi un verificator de stare a site-ului web, web scraper, bot de monitorizare a pieței de valori și tester de performanță a site-ului web. Pentru a instala modulul de solicitări, deschideți terminalul și executați următoarea comandă:solicitări de instalare pip
Puteți găsi întregul cod sursă al aplicației Știri folosind Python în aceasta Depozitul GitHub.
Generați cheia API News
Începeți prin a importa bibliotecile necesare. Înscrieți-vă la News API și generați cheia dvs. API. Cu contul de dezvoltator gratuit, puteți trimite până la 100 de solicitări zilnic, ceea ce este grozav de testat și de început. Stocați API-ul într-o variabilă pe care o veți folosi mai târziu cu adresa URL de bază pentru a prelua titlurile de top în funcție de țara dvs.
din tkinter import *
din tkinter import caseta de mesaje
import cereri
apiKey = „YOUR_API_KEY”
Definiți structura aplicației
Definiți o clasă, NewsApp. Faceți referire la apiKey și tip variabile la nivel global. Definiți un obiect al clasei și inițializați fereastra rădăcină. Setați dimensiunile și titlul aplicației dvs. Definiți două liste, veți folosi prima listă pentru a defini butoanele și a doua pentru a defini categoriile de știri pe care doriți să le afișați în aplicația dvs.
clasăNewsApp:
global apiKey, tastați
def__init__(sine, rădăcină):
self.root = rădăcină
self.root.geometry(„1000x650”)
self.root.title(„Aplicație de știri”)
self.newsCategoryButton = []
self.newsCategory = ["general", "divertisment", "sport", "tehnologie"]
Definiți o etichetă care să acționeze ca titlu pentru aplicația dvs. Treceți elementul părinte în care doriți să îl plasați, textul pe care ar trebui să-l afișeze, stilul fontului, umplutura și culoarea de fundal pe care ar trebui să o aibă. Folosește ambalaj() opțiunea de umplere pentru a face eticheta să ocupe întregul spațiu în direcția X.
Definiți a LabelFrame și setați elementul părinte împreună cu culoarea de fundal pe care ar trebui să o posede. Folosește loc() funcția de organizare la coordonatele specificate. În plus, treceți de lățimea și înălțimea cadrului.
titlu = Etichetă (self.root, text=„Aplicație de știri”, font=("Times New Roman", 28, "îndrăzneţ"), pady=2, bg=„#ff007f”).pachet (fill=X)
F1 = LabelFrame (self.root, bg=„#fc6c85”)
F1.loc (x=20, y=80, latime=215, inaltime=210)
Definiți o buclă for care traversează lungimea stiriCat listă. Definiți un buton în cadrul definit mai devreme. Transmiteți textul pe care ar trebui să-l afișeze și convertiți-l în majuscule. Treceți lățimea, adâncimea marginii, stilul fontului și culoarea de fundal a butoanelor. Folosește grilă manager pentru a aranja butoanele într-un format de coloană și pentru a adăuga umplutură în direcțiile X și Y.
Utilizați metoda de legare pentru a atașa butonul și zona de știri. definește că Zona de știri funcția va apărea la clicul stâng al mouse-ului de către utilizator. Adăugați aceste butoane la știriCatButton lista definită mai devreme.
pentru i în interval (len (self.newsCategory)):
b = Buton (F1, text=self.newsCategory[i].upper(), width=15, bd=3, font="arial 14 bold", bg=„#c154c1”)
b.grid (rând=i, coloană=0, padx=10, pady=5)
b.bind('' , de sine. Zona de știri)
self.newsCategoryButton.apend (b)
Definiți un cadru și transmiteți-i elementul părinte în care doriți să îl plasați și adâncimea marginii pe care ar trebui să o aibă. Organizați-l la coordonatele specificate și transmiteți înălțimea și lățimea relative. Definiți o bară de derulare verticală folosind orienta parametrul și plasați-l în acest cadru.
Definiți un widget text. Transmite elementul părinte ca acest cadru împreună cu stilul fontului și culoarea de fundal pe care ar trebui să o aibă. La setarea valorii lui yscrollcommand la fel de scroll_y.set primește poziția curentă a barei de derulare la interacțiunea cu utilizatorul.
F2 = Cadru (self.root, bd=3)
F2.locul (x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = Scrollbar (F2, orient=VERTICAL)
self.txtarea = Text (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "îndrăzneţ"), bg=„#fc6c85”)
Folosește ambalaj() opțiunea de umplere pentru a plasa bara de derulare în partea dreaptă a cadrului și pentru a ocupa întreg spațiul în direcția Y. La setarea parametrului de comandă ca txtarea.yview, mișcarea barei de derulare este legată de funcțiile sus și jos. Deci, atunci când utilizatorul interacționează cu bara de derulare, vizualizările zonei de text se schimbă în consecință.
Folosește introduce() metodă de a cere utilizatorului să selecteze o categorie și să o plaseze la sfârșitul oricărui text existent. Folosește ambalaj() metoda de a cere widget-ului text să ia spațiul în direcția X și Y și să atribuie spațiu suplimentar, dacă este necesar, folosind extinde parametru.
scroll_y.pack (partea=dreapta, umplere=Y)
scroll_y.config (comandă=self.txtarea.yview)
self.txtarea.insert (END,"Selectați o categorie:")
self.txtarea.pack (fill=BOTH, expand=1)
Extrageți știrile din răspunsul API
Definiți o funcție, Zona de știri() care acceptă instanța curentă a clasei și evenimentul buton. Treceți categoria știrilor selectate de utilizator cu litere mici și stocați-o. Transmiteți parametrii necesari la adresa URL de bază și ștergeți orice text prezent anterior de la primul index la ultimul. Introduceți o linie pentru demarcare.
Definiți a încerca blocați și trimiteți o solicitare HTTP GET către serverul definit în URL-ul de bază. Convertiți răspunsul în format JSON și extrageți conținutul care are cheia ca articole și stocați-l într-o variabilă.
defZona de știri(sine, eveniment):
tip = event.widget.cget('text').inferior()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={tip}&apiKey=' + apiKey
self.txtarea.delete("1.0", SFÂRŞIT)
self.txtarea.insert (END, "\n")
încerca:
articole = (requests.get (BASE_URL).json())['articole']
Dacă numărul de articole preluate nu este zero, rulați o buclă și introduceți articolele unul câte unul în widgetul text. Afișați titlul, urmat de descriere, conținut și URL în rânduri separate. Introduceți două linii pentru demarcare. Dacă numărul de articole este zero, afișați că nu sunt disponibile știri pentru categoria respectivă.
Dacă blocul de încercare eșuează, utilizați blocul de excepție pentru a afișa mesajul de eroare corespunzător pentru utilizatori.
dacă (articole != 0):
pentru i în gama (len (articole)):
self.txtarea.insert (END, f"{articole[i]['titlu']}\n")
self.txtarea.insert (END, f"{articole[i]['Descriere']}\n")
self.txtarea.insert (END, f"{articole[i]['conţinut']}\n")
self.txtarea.insert (END, f"citește mai mult...{articole[i][„url”]}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
altfel:
self.txtarea.insert (END, „Nu există știri disponibile”)
cu exceptia Excepție la fel de e:
messagebox.showerror('EROARE', „Ne pare rău, am avut câteva probleme. Vă rugăm să verificați conexiunea la internet și să încercați din nou.")
Creați o instanță a clasei și inițializați-o. The mainloop() funcția îi spune lui Python să ruleze bucla de evenimente Tkinter și să asculte evenimente până când închideți fereastra.
rădăcină = Tk()
obj = NewsApp (rădăcină)
root.mainloop()
Puneți tot codul împreună și aplicația dvs. este pregătită pentru a afișa știri în funcție de diferite categorii.
Ieșirea aplicației de știri
La rularea programului, zona de text vă solicită să selectați o categorie. Făcând clic pe oricare dintre butoane, acesta afișează știrile cu descrierea, conținutul și linkul său (dacă există) pentru acea categorie, separate de două rânduri.
API-uri utile pentru proiectul dvs. Python
API-urile sunt foarte utile pentru a integra aplicații noi cu sistemele software existente. Puteți utiliza API-ul OpenWeatherMap pentru a prelua informații meteo în timp real din orice zonă și API-ul Google Maps pentru a încorpora hărți în aplicația dvs. de site. Puteți automatiza sarcinile GitHub prin API-ul GitHub și puteți utiliza API-ul Zoom pentru integrarea conferințelor video.
De asemenea, puteți folosi puterea ChatGPT din propriile aplicații folosind API-ul OpenAI și puteți crea câteva aplicații fascinante bazate pe inteligență artificială.