Dowiedz się, jak stworzyć własną aplikację Wiadomości w Pythonie i bibliotece Tkinter.

W tym szybko zmieniającym się świecie bycie na bieżąco z najnowszymi wiadomościami ma kluczowe znaczenie. Zbuduj własną aplikację Wiadomości, która dostarcza wiadomości z różnych kategorii, takich jak rozrywka, sport i technologia, dostępnych na dowolnej platformie na wyciągnięcie ręki.

Będziesz rozwijać tę aplikację przy użyciu Tkinter, standardowej biblioteki GUI dla Pythona i zasilać ją za pomocą interfejsu API News, który pobiera artykuły z ponad 80 000 źródeł.

Zainstaluj moduły tkinter i żądań

Tkinter to wieloplatformowy, prosty i przyjazny dla użytkownika moduł które można wykorzystać do szybkiego tworzenia graficznych interfejsów użytkownika. Niektóre aplikacje, które możesz zbudować za pomocą Tkintera, obejmują odtwarzacz muzyki, kalendarz, narzędzie do konwersji wagi, gra polegająca na zbieraniu słów i tak dalej.

Żeby zainstalować tkinter w swoim systemie uruchom następujące polecenie w terminalu:

instagram viewer
pip zainstaluj tkintera

The upraszanie moduł ułatwia wykonywanie żądań HTTP. Z tym, możesz tworzyć ciekawe aplikacje, takie jak sprawdzanie statusu strony internetowej, web scraper, bot monitorujący giełdę i tester wydajności strony internetowej. Aby zainstalować moduł żądań, otwórz terminal i uruchom następujące polecenie:

żądania instalacji pip

Możesz znaleźć cały kod źródłowy aplikacji News używającej Pythona w tym Repozytorium GitHub.

Wygeneruj klucz API wiadomości

Rozpocznij od zaimportowania wymaganych bibliotek. Zarejestruj się o godz API wiadomości i wygeneruj swój klucz API. Dzięki bezpłatnemu kontu programisty możesz wysyłać do 100 żądań dziennie, co jest świetne do przetestowania i rozpoczęcia. Przechowuj interfejs API w zmiennej, której będziesz później używać z podstawowym adresem URL do pobierania najważniejszych nagłówków w Twoim kraju.

z tkinter import *
z tkinter import skrzynka pocztowa
import upraszanie

apiKey = „TWÓJ_KLUCZ_API”

Zdefiniuj strukturę aplikacji

Zdefiniuj klasę, NewsApp. Odwołaj się do Klucz API I typ zmienne globalnie. Zdefiniuj obiekt klasy i zainicjuj okno główne. Ustaw wymiary i tytuł swojej aplikacji. Zdefiniuj dwie listy, pierwszej listy użyjesz do zdefiniowania przycisków, a drugiej do zdefiniowania kategorii wiadomości, które chcesz wyświetlić w swojej aplikacji.

klasaNewsApp:
światowy apiKey, wpisz
pok__w tym__(ja, korzeń):
self.root = root
self.root.geometry(„1000x650”)
własny.tytuł.root(„Aplikacja wiadomości”)
self.newsCategoryButton = []
self.newsCategory = ["ogólny", "rozrywka", "Sporty", "technologia"]

Zdefiniuj etykietę, która działa jak tytuł aplikacji. Podaj element nadrzędny, w którym chcesz go umieścić, tekst, który ma wyświetlać, styl czcionki, wypełnienie i kolor tła, który powinien mieć. Użyj Pakiet() opcję wypełnienia, aby etykieta zajmowała całe miejsce w kierunku X.

zdefiniuj Ramka etykiety i ustaw jego element nadrzędny wraz z kolorem tła, który powinien posiadać. Użyj miejsce() funkcję zorganizowania go w określonych współrzędnych. Dodatkowo podaj szerokość i wysokość ramy.

 tytuł = Etykieta (self.root, tekst=„Aplikacja wiadomości”, czcionka=("Czcionka Times New Roman", 28, "pogrubiony"), pady=2, bg='#ff007f'.pack (wypełnienie=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.miejsce (x=20, y=80, szerokość=215, wysokość=210)

Zdefiniuj pętlę for, która przebiega przez długość aktualnościKot lista. Zdefiniuj przycisk w zdefiniowanej wcześniej ramce. Przekaż tekst, który powinien wyświetlić i zamień go na wielkie litery. Podaj szerokość, głębokość obramowania, styl czcionki i kolor tła przycisków. Użyj siatka menedżera, aby rozmieścić przyciski w formacie kolumnowym i dodać dopełnienie w kierunkach X i Y.

Użyj metody wiązania, aby dołączyć przycisk i obszar wiadomości. określa, że Strefa wiadomości funkcja nastąpi po kliknięciu lewym przyciskiem myszy przez użytkownika. Dołącz te przyciski do pliku newsCatButton lista zdefiniowana wcześniej.

Do I W zakres (len (self.newsCategory)):
b = Przycisk (F1, text=self.newsCategory[i].upper(), width=15, bd=3, czcionka="Arial 14 pogrubiony", bg='#c154c1')
b.siatka (wiersz=i, kolumna=0, padx=10, pada =5)
b.bind('', samego siebie. newsarea)
self.newsCategoryButton.append (b)

Zdefiniuj ramkę i podaj jej element nadrzędny, w którym chcesz ją umieścić, oraz głębokość obramowania, jaką powinna mieć. Zorganizuj go w określonych współrzędnych i podaj względną wysokość i szerokość. Zdefiniuj pionowy pasek przewijania za pomocą Orient parametr i umieść go w tej ramce.

Zdefiniuj widżet tekstowy. Przekaż element nadrzędny jako tę ramkę wraz ze stylem czcionki i kolorem tła, który powinien posiadać. Przy ustawianiu wartości polecenie yscroll Jak scroll_y.set pobiera bieżącą pozycję paska przewijania podczas interakcji użytkownika.

 F2 = Ramka (self.root, bd=3)
F2.miejsce (x=260, y=80, szerokość=0.7, ponownie wysokość=0.8)
scroll_y = Pasek przewijania (F2, orientacja=PIONOWA)
self.txtarea = Tekst (F2, yscrollcommand=scroll_y.set, font=("Czcionka Times New Roman", 15, "pogrubiony"), bg='#fc6c85')

Użyj Pakiet() fill, aby umieścić pasek przewijania po prawej stronie ramki i zająć całą przestrzeń w kierunku Y. Po ustawieniu parametru polecenia jako txtarea.yview, ruch paska przewijania jest powiązany z funkcjami w górę iw dół. Tak więc, gdy użytkownik wchodzi w interakcję z paskiem przewijania, widoki obszaru tekstowego odpowiednio się zmieniają.

Użyj wstawić() metoda, aby poprosić użytkownika o wybranie kategorii i umieszczenie jej na końcu istniejącego tekstu. Użyj Pakiet() , aby poprosić widżet tekstowy o zajęcie miejsca w kierunku X i Y i przypisanie dodatkowego miejsca, jeśli to konieczne, za pomocą metody zwiększać parametr.

 scroll_y.pack (bok=PRAWY, wypełnienie=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (KONIEC,"Wybierz kategorię:")
self.txtarea.pack (fill=OBIE, rozwiń=1)

Wyodrębnij wiadomości z odpowiedzi API

Zdefiniuj funkcję, Strefa wiadomości() który akceptuje bieżącą instancję klasy i zdarzenie przycisku. Przekaż kategorię wiadomości wybraną przez użytkownika małymi literami i zapisz ją. Przekaż wymagane parametry do podstawowego adresu URL i usuń tekst znajdujący się wcześniej od pierwszego do ostatniego indeksu. Wstaw linię do rozgraniczenia.

zdefiniuj próbować zablokować i wysłać żądanie HTTP GET do serwera zdefiniowanego w podstawowym adresie URL. Przekonwertuj odpowiedź na format JSON i wyodrębnij zawartość, która ma klucz as artykuły i zapisać go w zmiennej.

pokStrefa wiadomości(ja, zdarzenie):
typ = zdarzenie.widget.cget('tekst').niżej()
BASE_URL = F' http://newsapi.org/v2/top-headlines? kraj=w&kategorii={typ}&apiKey=' + apiKey
self.txtarea.delete("1.0", KONIEC)
self.txtarea.insert (KONIEC, "\N")
próbować:
artykuły = (requests.get (BASE_URL).json())[„artykuły”]

Jeśli liczba pobranych artykułów nie wynosi zero, uruchom pętlę i wstaw artykuły jeden po drugim do widżetu tekstowego. Wyświetl tytuł, a następnie opis, treść i adres URL w osobnych wierszach. Wstaw dwie linie do rozgraniczenia. Jeśli liczba artykułów wynosi zero, wyświetl, że dla tej konkretnej kategorii nie są dostępne żadne wiadomości.

Jeśli blok try nie powiedzie się, użyj bloku wyjątków, aby wyświetlić użytkownikom odpowiedni komunikat o błędzie.

Jeśli (artykuły!= 0):
Do I W zakres (len (artykuły)):
self.txtarea.insert (KONIEC, F"{artykuły[i][]'tytuł']}\N")
self.txtarea.insert (KONIEC, F"{artykuły[i][]'opis']}\N")
self.txtarea.insert (KONIEC, F"{artykuły[i][]'treść']}\N")
self.txtarea.insert (KONIEC, f" czytaj więcej...{artykuły[i][]„URL”]}\N")
self.txtarea.insert (KONIEC, "\N")
self.txtarea.insert (KONIEC, "\N")
w przeciwnym razie:
self.txtarea.insert (KONIEC, „Brak dostępnych wiadomości”)
z wyjątkiem Wyjątek Jak mi:
skrzynka wiadomości.prysznic('BŁĄD', „Przepraszamy, napotkaliśmy pewne problemy. Sprawdź połączenie internetowe i spróbuj ponownie.")

Utwórz instancję klasy i zainicjuj ją. The główna pętla() mówi Pythonowi, aby uruchomił pętlę zdarzeń Tkinter i nasłuchiwał zdarzeń, dopóki nie zamkniesz okna.

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

Złóż cały kod razem, a Twoja aplikacja będzie gotowa do wyświetlania wiadomości według różnych kategorii.

Dane wyjściowe aplikacji Wiadomości

Po uruchomieniu programu, obszar tekstowy prosi o wybranie kategorii. Kliknięcie dowolnego przycisku powoduje wyświetlenie wiadomości z opisem, treścią i linkiem (jeśli istnieje) dla tej kategorii oddzielone dwoma wierszami.

Przydatne interfejsy API dla Twojego projektu w języku Python

Interfejsy API są bardzo przydatne do integracji nowych aplikacji z istniejącymi systemami oprogramowania. Możesz użyć interfejsu API OpenWeatherMap, aby uzyskać informacje o pogodzie w czasie rzeczywistym dla dowolnego obszaru, oraz interfejsu API Map Google, aby włączyć mapy do swojej aplikacji internetowej. Możesz zautomatyzować zadania GitHub za pośrednictwem GitHub API i użyć Zoom API do integracji wideokonferencji.

Możesz także wykorzystać moc ChatGPT we własnych aplikacjach za pomocą API OpenAI i stworzyć fascynujące aplikacje oparte na sztucznej inteligencji.