Ismerje meg, hogyan hozhatja létre saját híralkalmazását a Python és a Tkinter könyvtár segítségével.

Ebben a rohanó világban döntő fontosságú, hogy naprakész legyen a legfrissebb hírekkel. Készítse el saját Híralkalmazását, amely a különböző kategóriákba tartozó híreket, például szórakoztatást, sportolást és technológiát kínál, amelyek bármilyen platformon elérhetők, az Ön keze ügyében.

Ezt az alkalmazást a Python szabványos grafikus felhasználói felület-könyvtárával, a Tkinterrel fejlesztheti, és a News API segítségével működtetheti, amely több mint 80 000 forrásból szerez cikkeket.

Telepítse a tkintert és kéri a modulokat

A Tkinter egy többplatformos, egyszerű és felhasználóbarát modul amelyek segítségével gyorsan létrehozhat grafikus felhasználói felületeket. Néhány A Tkinter segítségével létrehozható alkalmazások között zenelejátszó is található, naptár, súlyátalakító eszköz, szózavaró játék stb.

Telepíteni tkinter rendszerében futtassa a következő parancsot a terminálban:

pip install tkinter
instagram viewer

A kéréseket modul megkönnyíti a HTTP kérések elkészítését. Ezzel, érdekes alkalmazásokat fejleszthet, például webhely állapotellenőrzőt, webkaparó, tőzsdefigyelő bot és weboldal teljesítménytesztelő. A kérések modul telepítéséhez nyissa meg a terminált, és futtassa a következő parancsot:

pip telepítési kérések

A News alkalmazás teljes forráskódját a Python használatával találja meg ebben GitHub adattár.

A News API-kulcs létrehozása

Kezdje a szükséges könyvtárak importálásával. Jelentkezés a News API és generálja az API-kulcsot. Az ingyenes fejlesztői fiókkal naponta akár 100 kérelmet is elküldhet, ami nagyszerű a teszteléshez és a kezdéshez. Tárolja az API-t egy változóban, amelyet később az alap URL-lel együtt fog használni az országának megfelelő legfelső címsorok lekéréséhez.

tól től tkinter import *
tól től tkinter import üzenetbox
import kéréseket

apiKey = „YOUR_API_KEY”

Határozza meg az alkalmazás szerkezetét

Határozzon meg egy osztályt, NewsApp. Hivatkozás a apiKey és típus változók globálisan. Határozza meg az osztály objektumát, és inicializálja a gyökérablakot. Állítsa be az alkalmazás méreteit és címét. Határozzon meg két listát, az első listát használja a gombok meghatározásához, a másodikat pedig az alkalmazásban megjeleníteni kívánt hírek kategóriáinak meghatározásához.

osztályNewsApp:
globális apiKey, típus
def__benne__(én, gyökér):
self.root = gyökér
self.root.geometry("1000x650")
self.root.title("Hírek alkalmazás")
self.newsCategoryButton = []
self.newsCategory = ["Tábornok", "szórakozás", "sport", "technológia"]

Határozzon meg egy címkét, amely az alkalmazás címeként működik. Adja meg a szülőelemet, amelybe el szeretné helyezni, a szöveget, amelyet meg kell jelenítenie, a betűtípust, a kitöltést és a háttérszínt. Használja a csomag() kitöltési lehetőséget, hogy a címke X irányban a teljes helyet elfoglalja.

Határozza meg a Címke keret és állítsa be a szülőelemet a háttérszínnel együtt. Használja a hely() funkciót, hogy meghatározott koordinátákra szervezze. Ezenkívül adja át a keret szélességét és magasságát.

 title = Címke (self.root, text="Hírek alkalmazás", font=("Times New Roman", 28, "bátor"), pady=2, bg="#ff007f").pack (fill=X)
F1 = LabelFrame (self.root, bg="#fc6c85")
F1.hely (x=20, y=80, szélesség=215, magasság=210)

Határozzon meg egy for ciklust, amely végigfut a hosszon hírekCat lista. Határozzon meg egy gombot a korábban meghatározott keretben. Adja át a megjelenítendő szöveget, és alakítsa át nagybetűssé. Adja meg a gombok szélességét, szegélymélységét, betűstílusát és háttérszínét. Használja a rács kezelőt, hogy a gombokat oszlopos formátumba rendezze, és kitöltést adjon X és Y irányban.

A kötési módszerrel csatolja a gombot és a hírterületet. meghatározza, hogy a Newsarea funkció a bal egérgombbal történik a felhasználó által. Csatlakoztassa ezeket a gombokat a newsCatButton korábban meghatározott lista.

számára én ban ben tartomány (len (self.newsCategory)):
b = Gomb (F1, text=self.newsCategory[i].upper(), szélesség=15, bd=3, font="arial 14 félkövér", bg="#c154c1")
b.rács (sor=i, oszlop=0, padx=10, pady=5)
b.bind('', maga. hírterület)
self.newsCategoryButton.append (b)

Határozzon meg egy keretet, és adja át neki azt a szülőelemet, amelybe el szeretné helyezni, valamint a keretmélységet, amelynek rendelkeznie kell. Rendezze meghatározott koordinátákra, és adja át a relatív magasságot és szélességet. Határozzon meg egy függőleges görgetősávot a hajnal paramétert, és helyezze ebbe a keretbe.

Szöveges widget meghatározása. Adja át a szülőelemet ennek a keretnek a betűstílusával és a háttérszínnel együtt. Az érték beállításánál a yscrollcommand mint scroll_y.set a felhasználói interakció során megkapja a görgetősáv aktuális pozícióját.

 F2 = Keret (self.root, bd=3)
F2.hely (x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = Görgetősáv (F2, orient=VERTICAL)
self.txtarea = Szöveg (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "bátor"), bg="#fc6c85")

Használja a csomag() kitöltési lehetőség, hogy a görgetősávot a keret jobb oldalára helyezze, és a teljes helyet elfoglalja Y irányban. A parancsparaméter beállításakor mint txtarea.yview, a görgetősáv mozgása a fel és le funkciókhoz kapcsolódik. Tehát, amikor a felhasználó a görgetősávot használja, a szöveges terület nézetei ennek megfelelően módosulnak.

Használja a insert() módszer arra kéri a felhasználót, hogy válasszon ki egy kategóriát, és helyezze azt a meglévő szöveg végére. Használja a csomag() metódus, amellyel megkérheti a szöveges widgetet, hogy foglalja el a helyet X és Y irányban, és szükség esetén rendeljen hozzá további szóközt a kiterjed paraméter.

 scroll_y.pack (oldal=JOBB, fill=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Válasszon egy kategóriát:")
self.txtarea.pack (fill=BOTH, expand=1)

Hírek kibontása az API-válaszból

Határozzon meg egy függvényt, Hírterület() amely elfogadja az osztály aktuális példányát és a gombeseményt. Adja át a felhasználó által kiválasztott hír kategóriáját kisbetűvel, és tárolja. Adja át a szükséges paramétereket az alap URL-nek, és törölje a korábban jelen lévő szöveget az első indextől az utolsóig. Szúrjon be egy sort a demarkációhoz.

Határozza meg a próbáld ki blokkolja, és küldjön egy HTTP GET kérést az alap URL-ben meghatározott szervernek. Alakítsa át a választ JSON formátumba, és bontsa ki a kulcsot mint tartalmat cikkeket és tárolja egy változóban.

defNewsarea(én, esemény):
type = event.widget.cget('szöveg').Alsó()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={típus}&apiKey=' + apiKey
self.txtarea.delete("1.0", VÉGE)
self.txtarea.insert (END, "\n")
próbáld ki:
cikkek = (requests.get (BASE_URL).json())["cikkek"]

Ha a lekért cikkek száma nem nulla, futtasson egy ciklust, és egyenként szúrja be a cikkeket a szöveg widgetbe. Jelenítse meg a címet, majd a leírást, a tartalmat és az URL-t külön sorokban. Szúrjon be két sort a demarkációhoz. Ha a cikkek száma nulla, akkor jelenítse meg, hogy az adott kategóriában nincs hír.

Ha a try blokk sikertelen, használja a kivételblokkot a megfelelő hibaüzenet megjelenítéséhez a felhasználók számára.

ha (cikkek != 0):
számára én ban ben tartomány (len (cikk)):
self.txtarea.insert (END, f"{cikkek[i]['cím']}\n")
self.txtarea.insert (END, f"{cikkek[i]['leírás']}\n")
self.txtarea.insert (END, f"{cikkek[i]['tartalom']}\n")
self.txtarea.insert (END, f"tovább...{cikkek[i]["url"]}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
más:
self.txtarea.insert (END, "Nincs elérhető hír")
kivéve Kivétel mint e:
messagebox.showerror('HIBA', "Sajnos néhány problémába ütköztünk. Kérjük, ellenőrizze az internetkapcsolatot, és próbálja újra.")

Hozzon létre egy példányt az osztályból, és inicializálja. A mainloop() függvény azt mondja a Pythonnak, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket, amíg be nem zárja az ablakot.

gyökér = Tk()
obj = NewsApp (gyökér)
root.mainloop()

Tegye össze az összes kódot, és az alkalmazás készen áll a hírek megjelenítésére a különböző kategóriák szerint.

A híralkalmazás kimenete

A program futtatásakor a szöveges terület kategória kiválasztását kéri. Bármelyik gombra kattintva megjeleníti a hírt az adott kategória leírásával, tartalommal és linkjével (ha van) két sorral elválasztva.

Hasznos API-k a Python-projekthez

Az API-k rendkívül hasznosak az új alkalmazások és a meglévő szoftverrendszerek integrálásához. Használhatja az OpenWeatherMap API-t bármely terület valós idejű időjárási információinak lekérésére, a Google Maps API-val pedig térképeket építhet be webhelye alkalmazásába. Automatizálhatja a GitHub-feladatokat a GitHub API-n keresztül, és a Zoom API-t használhatja a videokonferenciák integrálásához.

A ChatGPT erejét saját alkalmazásaiból is használhatja az OpenAI API segítségével, és létrehozhat néhány lenyűgöző AI-alapú alkalmazást.