Naučte se, jak vytvořit svou vlastní aplikaci News pomocí Pythonu a knihovny Tkinter.

V tomto rychle se rozvíjejícím světě je důležité být informován o nejnovějších zprávách. Vytvořte si svou vlastní aplikaci Zprávy, která vám poskytne zprávy z různých kategorií, jako je zábava, sport a technologie, dostupné na jakékoli platformě přímo na dosah ruky.

Tuto aplikaci budete vyvíjet pomocí Tkinter, standardní knihovny GUI pro Python, a budete ji napájet pomocí News API, které získává články z více než 80 000 zdrojů.

Nainstalujte tkinter a vyžádejte si moduly

Tkinter je multiplatformní, jednoduchý a uživatelsky přívětivý modul které můžete použít k rychlému vytváření grafických uživatelských rozhraní. Některé z aplikace, které můžete vytvářet pomocí Tkinter, zahrnují hudební přehrávač, kalendář, nástroj pro převod hmotnosti, hra se slovními změti a tak dále.

Instalovat tkinter ve svém systému spusťte v terminálu následující příkaz:

pip nainstalovat tkinter

The žádosti modul usnadňuje vytváření požadavků HTTP. S tím,

instagram viewer
můžete vyvíjet zajímavé aplikace, jako je kontrola stavu webu, webový škrabák, bot monitorující akciový trh a tester výkonu webových stránek. Chcete-li nainstalovat modul požadavků, otevřete terminál a spusťte následující příkaz:

požadavky na instalaci pip

Celý zdrojový kód aplikace News pomocí Pythonu najdete v tomto úložiště GitHub.

Vygenerujte klíč rozhraní News API

Začněte importem požadovaných knihoven. Zaregistrujte se na Novinky API a vygenerujte svůj API klíč. S bezplatným vývojářským účtem můžete odeslat až 100 žádostí denně, což je skvělé pro testování a zahájení. Uložte rozhraní API do proměnné, kterou později použijete se základní adresou URL k načtení hlavních titulků podle vaší země.

z tkinter import *
z tkinter import schránka zpráv
import žádosti

apiKey = 'YOUR_API_KEY'

Definujte strukturu aplikace

Definujte třídu, NewsApp. Odkaz na apiKey a typ proměnné globálně. Definujte objekt třídy a inicializujte kořenové okno. Nastavte rozměry a název vaší aplikace. Definujte dva seznamy, první seznam použijete k definování tlačítek a druhý k definici kategorií novinek, které chcete ve své aplikaci zobrazovat.

třídaNewsApp:
globální apiKey, typ
def__init__(já, kořen):
self.kořen = kořen
vlastní.kořenová.geometrie('1000x650')
self.root.title("Zpravodajská aplikace")
self.newsCategoryButton = []
self.newsCategory = ["Všeobecné", "zábava", "sportovní", "technika"]

Definujte štítek, který funguje jako název vaší aplikace. Předejte nadřazený prvek, do kterého jej chcete umístit, text, který by měl zobrazovat, styl písma, výplň a barvu pozadí, kterou by měl mít. Použijte balíček() výplň, aby štítek zabíral celý prostor ve směru X.

Definujte a LabelFrame a nastavte jeho nadřazený prvek spolu s barvou pozadí, kterou by měl mít. Použijte místo() funkci uspořádat na zadaných souřadnicích. Dále protáhněte šířku a výšku rámu.

 title = Label (self.root, text="Zpravodajská aplikace", font=("Times New Roman", 28, "tučně"), pady=2, bg='#ff007f').pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.místo (x=20, y=80, šířka=215, výška=210)

Definujte cyklus for, který prochází délkou novinkyKat seznam. Definujte tlačítko v dříve definovaném rámci. Předejte text, který by se měl zobrazit, a převeďte jej na velká písmena. Předejte šířku, hloubku ohraničení, styl písma a barvu pozadí tlačítek. Použijte mřížka správce uspořádat tlačítka ve sloupcovém formátu a přidat odsazení ve směrech X a Y.

K připojení tlačítka a oblasti zpráv použijte metodu vazby. definuje, že Newsarea funkce se objeví po kliknutí levým tlačítkem myši uživatelem. Připojte tato tlačítka k newsCatButton seznam definovaný dříve.

pro i v rozsah (len (self.newsCategory)):
b = Tlačítko (F1, text=self.newsCategory[i].upper(), width=15, bd=3, font="arial 14 bold", bg='#c154c1')
b.grid (řádek=i, sloupec=0, padx=10, pady=5)
b.bind('', sebe. Newsarea)
self.newsCategoryButton.append (b)

Definujte rámeček a předejte mu rodičovský prvek, do kterého jej chcete umístit, a hloubku ohraničení, kterou by měl mít. Uspořádejte jej na zadaných souřadnicích a předejte relativní výšku a šířku. Definujte svislý posuvník pomocí orient parametr a umístěte jej do tohoto rámečku.

Definujte textový widget. Předejte nadřazený prvek jako tento rámeček spolu se stylem písma a barvou pozadí, které by měl mít. Při nastavení hodnoty yscrollcommand tak jako scroll_y.set získá aktuální pozici posuvníku při interakci uživatele.

 F2 = Rámec (self.root, bd=3)
F2.místo (x=260, y=80, relwidth=0.7, převýšení=0.8)
scroll_y = posuvník (F2, orient=VERTICAL)
self.txtarea = Text (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "tučně"), bg='#fc6c85')

Použijte balíček() výplň umístíte posuvník na pravou stranu rámu a zabere celý prostor ve směru Y. Při nastavení parametru příkazu jako txtarea.yview, pohyb posuvníku se propojí s funkcemi nahoru a dolů. Když tedy uživatel interaguje s posuvníkem, zobrazení textové oblasti se odpovídajícím způsobem změní.

Použijte vložit() způsob, jak požádat uživatele, aby vybral kategorii a umístil ji na konec jakéhokoli existujícího textu. Použijte balíček() způsob, jak požádat textový widget, aby zabral místo ve směru X a Y a v případě potřeby přidělil další místo pomocí rozšířit parametr.

 scroll_y.pack (strana=RIGHT, fill=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Vyberte kategorii:")
self.txtarea.pack (fill=BOTH, expand=1)

Extrahujte zprávy z odpovědi API

Definujte funkci, Newsarea() která přijímá aktuální instanci třídy a událost tlačítka. Předejte kategorii zpráv, kterou uživatel vybral, malými písmeny a uložte ji. Předejte požadované parametry základní URL a odstraňte veškerý dříve přítomný text od prvního indexu po poslední. Vložte čáru pro vymezení.

Definujte a Snaž se zablokovat a odeslat požadavek HTTP GET na server definovaný v základní URL. Převeďte odpověď do formátu JSON a extrahujte obsah, který má klíč jako články a uložte jej do proměnné.

defNewsarea(sebe, událost):
typ = event.widget.cget('text').dolní()
BASE_URL = F' http://newsapi.org/v2/top-headlines? country=in&category={typ}&apiKey=' + apiKey
self.txtarea.delete("1.0", KONEC)
self.txtarea.insert (END, "\n")
Snaž se:
články = (requests.get (BASE_URL).json())['články']

Pokud počet načtených článků není nula, spusťte cyklus a vkládejte články jeden po druhém do textového widgetu. Zobrazte název následovaný popisem, obsahem a adresou URL na samostatných řádcích. Vložte dvě čáry pro vymezení. Pokud je počet článků nula, zobrazí se, že pro danou kategorii nejsou k dispozici žádné zprávy.

Pokud blok try selže, použijte blok výjimky k zobrazení příslušné chybové zprávy uživatelům.

-li (články != 0):
pro i v rozsah (len (články)):
self.txtarea.insert (END, F"{články[i]['titul']}\n")
self.txtarea.insert (END, F"{články[i]['popis']}\n")
self.txtarea.insert (END, F"{články[i]['obsah']}\n")
self.txtarea.insert (END, f" číst více...{články[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
jiný:
self.txtarea.insert (END, "Žádné novinky nejsou k dispozici")
až na Výjimka tak jako E:
messagebox.showerror('CHYBA', „Promiň, narazili jsme na nějaké problémy. Zkontrolujte prosím připojení k internetu a zkuste to znovu.")

Vytvořte instanci třídy a inicializujte ji. The mainloop() Funkce říká Pythonu, aby spustil smyčku událostí Tkinter a naslouchal událostem, dokud nezavřete okno.

kořen = Tk()
obj = NewsApp (root)
root.mainloop()

Dejte celý kód dohromady a vaše aplikace je připravena zobrazovat novinky podle různých kategorií.

Výstup aplikace Zprávy

Při spuštění programu se v textové oblasti zobrazí výzva k výběru kategorie. Po kliknutí na kterékoli z tlačítek zobrazí novinky s popisem, obsahem a odkazem (pokud existuje) pro danou kategorii oddělené dvěma řádky.

Užitečná rozhraní API pro váš projekt Python

Rozhraní API jsou velmi užitečná pro integraci nových aplikací se stávajícími softwarovými systémy. Můžete použít OpenWeatherMap API k načtení informací o počasí v reálném čase z jakékoli oblasti a Google Maps API k začlenění map do vaší webové aplikace. Úlohy GitHubu můžete automatizovat prostřednictvím rozhraní GitHub API a používat Zoom API pro integraci videokonferencí.

Sílu ChatGPT můžete také využít ve svých vlastních aplikacích pomocí API OpenAI a vytvořit některé fascinující aplikace založené na AI.