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
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.