Узнайте, как создать собственное новостное приложение с помощью Python и библиотеки Tkinter.
В этом быстро меняющемся мире очень важно быть в курсе последних новостей. Создайте свое собственное новостное приложение, которое будет получать новости из разных категорий, таких как развлечения, спорт и технологии, доступные на любой платформе прямо у вас под рукой.
Вы разработаете это приложение, используя Tkinter, стандартную библиотеку графического интерфейса для Python, и запустите его с помощью API новостей, который получает статьи из более чем 80 000 источников.
Установите tkinter и модули запросов
Tkinter — кроссплатформенный, простой и удобный модуль. которые можно использовать для быстрого создания графических пользовательских интерфейсов. Некоторые из приложения, которые вы можете создавать с помощью Tkinter, включают музыкальный проигрыватель, календарь, инструмент для преобразования веса, игра со словами и так далее.
Установить ткинтер в вашей системе выполните следующую команду в терминале:
пип установить ткинтер
Запросы Модуль упрощает выполнение HTTP-запросов. С этим, вы можете разрабатывать интересные приложения, такие как проверка статуса веб-сайта, веб-скребок, бот для мониторинга фондового рынка и тестер производительности веб-сайта. Чтобы установить модуль запросов, откройте терминал и выполните следующую команду:
запросы на установку pip
Вы можете найти весь исходный код приложения новостей с использованием Python в этом Репозиторий GitHub.
Сгенерируйте ключ API новостей
Начните с импорта необходимых библиотек. Зарегистрироваться на API новостей и сгенерируйте ключ API. С бесплатной учетной записью разработчика вы можете отправлять до 100 запросов в день, что отлично подходит для тестирования и начала работы. Сохраните API в переменной, которую вы будете использовать позже с базовым URL-адресом для получения самых популярных заголовков в соответствии с вашей страной.
от ткинтер Импортировать *
от ткинтер Импортировать окно сообщения
Импортировать Запросы
APIKey = 'ВАШ_API_KEY'
Определите структуру приложения
определить класс, НовостиApp. Ссылка на APIKey и тип переменные глобально. Определите объект класса и инициализируйте корневое окно. Установите размеры и заголовок вашего приложения. Определите два списка, вы будете использовать первый список для определения кнопок, а второй — для определения категорий новостей, которые вы хотите отображать в своем приложении.
сортНовостиApp:
Глобальный APIKey, тип
деф__в этом__(я, корень):
self.root = корень
self.root.геометрия(«1000x650»)
self.root.title(«Новостное приложение»)
self.newsCategoryButton = []
self.newsCategory = ["общий", "развлечение", "виды спорта", "технологии"]
Определите метку, которая действует как заголовок для вашего приложения. Передайте родительский элемент, в который вы хотите его поместить, текст, который он должен отображать, стиль шрифта, отступы и цвет фона, который он должен иметь. Использовать пакет() заливки, чтобы метка занимала все пространство в направлении X.
Определите МеткаРамка и установите его родительский элемент вместе с цветом фона, которым он должен обладать. Использовать место() функция, чтобы организовать его по указанным координатам. Дополнительно передаем ширину и высоту рамы.
title = Метка (self.root, text=«Новостное приложение», шрифт=("таймс нью роман", 28, "смелый"), пади =2, бг='#ff007f').pack (заполнить=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.место (х=20, у =80, ширина =215, высота =210)
Определите цикл for, который проходит по всей длине новостиКот список. Определите кнопку в кадре, определенном ранее. Передайте текст, который он должен отображать, и преобразуйте его в верхний регистр. Передайте ширину, глубину границы, стиль шрифта и цвет фона кнопок. Использовать сетка менеджер, чтобы расположить кнопки в столбцовом формате и добавить отступы в направлениях X и Y.
Используйте метод привязки, чтобы прикрепить кнопку и область новостей. определяет, что новостной раздел функция будет выполняться по щелчку левой кнопки мыши пользователем. Добавьте эти кнопки в новостиКотКнопка список, определенный ранее.
для я в диапазон (длина (self.newsCategory)):
b = Кнопка (F1, text=self.newsCategory[i].upper(), width=15, бд=3, шрифт ="ариал 14 полужирный", бг='# c154c1')
b.grid (строка = i, столбец =0, padx=10, пэди =5)
б.бинд('' , себя. Новости)
self.newsCategoryButton.append (б)
Определите фрейм и передайте ему родительский элемент, в который вы хотите его поместить, и глубину границы, которую он должен иметь. Организуйте его по указанным координатам и передайте относительную высоту и ширину. Определите вертикальную полосу прокрутки с помощью ориентироваться параметр и поместите его в этот кадр.
Определите текстовый виджет. Передайте родительский элемент в качестве этого фрейма вместе со стилем шрифта и цветом фона, которым он должен обладать. При установке значения параметра yscrollкоманда как scroll_y.set он получает текущую позицию полосы прокрутки при взаимодействии с пользователем.
F2 = Фрейм (self.root, bd=3)
F2.место (х=260, у =80, относительная ширина =0.7, высота=0.8)
scroll_y = полоса прокрутки (F2, ориентация=ВЕРТИКАЛЬНАЯ)
self.txtarea = Текст (F2, yscrollcommand=scroll_y.set, шрифт=("таймс нью роман", 15, "смелый"), бг='#fc6c85')
Использовать пакет() fill, чтобы разместить полосу прокрутки с правой стороны рамки и занять все пространство в направлении Y. При установке параметра команды как txtarea.yview, движение полосы прокрутки связано с функциями вверх и вниз. Таким образом, когда пользователь взаимодействует с полосой прокрутки, вид текстовой области изменяется соответствующим образом.
Использовать вставлять() метод, чтобы попросить пользователя выбрать категорию и поместить ее в конец любого существующего текста. Использовать пакет() метод, чтобы попросить текстовый виджет занять место в направлении X и Y и назначить дополнительное пространство, если это необходимо, с помощью расширять параметр.
scroll_y.pack (сторона=ПРАВО, заполнение=Y)
scroll_y.config (команда = self.txtarea.yview)
self.txtarea.insert (КОНЕЦ,"Выберите категорию:")
self.txtarea.pack (заполнить=ОБА, развернуть=1)
Извлечение новостей из ответа API
Определите функцию, Новости() который принимает текущий экземпляр класса и событие кнопки. Передайте категорию новостей, выбранную пользователем, в нижнем регистре и сохраните ее. Передайте необходимые параметры базовому URL-адресу и удалите любой текст, присутствующий ранее, из первого индекса в последний. Вставьте линию для разграничения.
Определите пытаться заблокировать и отправить запрос HTTP GET на сервер, указанный в базовом URL-адресе. Преобразуйте ответ в формат JSON и извлеките содержимое с ключом как статьи и сохранить его в переменной.
дефновостной раздел(я, событие):
тип = событие.виджет.cget('текст').ниже()
БАЗОВЫЙ_URL = ж' http://newsapi.org/v2/top-headlines? страна=в&категории={тип}&apiKey=' + APIKey
self.txtarea.delete("1.0", КОНЕЦ)
self.txtarea.insert (КОНЕЦ, "\п")
пытаться:
статьи = (requests.get (BASE_URL).json())['статьи']
Если количество извлеченных статей не равно нулю, запустите цикл и вставьте статьи одну за другой в текстовый виджет. Отобразите заголовок, а затем описание, содержание и URL-адрес в отдельных строках. Вставьте две линии для разграничения. Если количество статей равно нулю, отобразите, что для этой конкретной категории новостей нет.
Если блок try не работает, используйте блок исключений, чтобы отобразить пользователям соответствующее сообщение об ошибке.
если (статьи != 0):
для я в диапазон (len (статьи)):
self.txtarea.insert (КОНЕЦ, ф"{статьи[я]['заголовок']}\п")
self.txtarea.insert (КОНЕЦ, ф"{статьи[я]['описание']}\п")
self.txtarea.insert (КОНЕЦ, ф"{статьи[я]['содержание']}\п")
self.txtarea.insert (КОНЕЦ, ф" читать дальше...{статьи[я]['адрес']}\п")
self.txtarea.insert (КОНЕЦ, "\п")
self.txtarea.insert (КОНЕЦ, "\п")
еще:
self.txtarea.insert (КОНЕЦ, "Нет доступных новостей")
кроме Исключение как е:
messagebox.showerror('ОШИБКА', "Извините, мы столкнулись с некоторыми проблемами. Пожалуйста, проверьте подключение к Интернету и повторите попытку».)
Создайте экземпляр класса и инициализируйте его. основной цикл () Функция сообщает Python запустить цикл событий Tkinter и прослушивать события, пока вы не закроете окно.
корень = Тк()
obj = NewsApp (корень)
корень.mainloop()
Соберите весь код вместе, и ваше приложение готово отображать новости по разным категориям.
Вывод новостного приложения
При запуске программы в текстовой области предлагается выбрать категорию. При нажатии любой из кнопок отображается новость с описанием, содержанием и ссылкой (если есть) для этой категории, разделенными двумя строками.
Полезные API для вашего проекта Python
API очень удобны для интеграции новых приложений с существующими программными системами. Вы можете использовать API OpenWeatherMap для получения информации о погоде в реальном времени в любой области и API Карт Google для включения карт в приложение вашего веб-сайта. Вы можете автоматизировать задачи GitHub через API GitHub и использовать API Zoom для интеграции видеоконференций.
Вы также можете использовать возможности ChatGPT в своих собственных приложениях с помощью API OpenAI и создавать интересные приложения на базе ИИ.