Python ve Tkinter kitaplığı ile kendi Haber uygulamanızı nasıl oluşturacağınızı öğrenin.

Bu hızlı tempolu dünyada, en son haberlerden haberdar olmak çok önemlidir. Eğlence, spor ve teknoloji gibi farklı kategorilerdeki haberleri herhangi bir platformda parmaklarınızın ucuna getiren kendi Haber uygulamanızı oluşturun.

Bu uygulamayı Python için standart GUI kitaplığı olan Tkinter kullanarak geliştirecek ve 80.000'den fazla kaynaktan makaleler alan News API'yi kullanarak güçlendireceksiniz.

tkinter'ı kurun ve Modülleri talep edin

Tkinter, platformlar arası, basit ve kullanıcı dostu bir modüldür hızlı bir şekilde grafiksel kullanıcı arayüzleri oluşturmak için kullanabileceğiniz. Bazıları Tkinter kullanarak oluşturabileceğiniz uygulamalar bir müzik çalar içerir, takvim, ağırlık dönüştürme aracı, kelime karmaşası oyunu vb.

Yüklemek tkinter sisteminizde, terminalde aşağıdaki komutu çalıştırın:

pip kurulumu tkinter

bu istekler modülü, HTTP istekleri yapmayı kolaylaştırır. Bununla, web sitesi durum denetleyicisi gibi ilginç uygulamalar geliştirebilirsiniz

instagram viewer
, web kazıyıcı, borsa izleme botu ve web sitesi performans test cihazı. İstek modülünü kurmak için terminali açın ve aşağıdaki komutu çalıştırın:

pip yükleme istekleri

Python kullanan News uygulamasının kaynak kodunun tamamına bu linkten ulaşabilirsiniz. GitHub deposu.

News API Anahtarını Oluşturun

Gerekli kitaplıkları içe aktararak başlayın. kayıt ol Haber API'sı ve API anahtarınızı oluşturun. Ücretsiz geliştirici hesabıyla günde 100'e kadar istek gönderebilirsiniz, bu da test etmek ve başlamak için harikadır. API'yi, ülkenize göre en önemli başlıkları getirmek için daha sonra temel URL ile birlikte kullanacağınız bir değişkende saklayın.

itibaren tkinter içe aktarmak *
itibaren tkinter içe aktarmak mesaj Kutusu
içe aktarmak istekler

apiKey = "YOUR_API_KEY"

Uygulamanın Yapısını Tanımlayın

Bir sınıf tanımlayın, Haber Uygulaması. Referans apiKey Ve tip küresel değişkenler. Sınıfın bir nesnesini tanımlayın ve kök pencereyi başlatın. Uygulamanızın boyutlarını ve başlığını ayarlayın. İki liste tanımlayın, ilk listeyi düğmeleri tanımlamak için, ikincisini ise uygulamanızda görüntülemek istediğiniz haber kategorilerini tanımlamak için kullanacaksınız.

sınıfHaber Uygulaması:
küresel apiKey, yazın
kesin__içinde__(öz, kök):
self.root = kök
self.root.geometry("1000x650")
self.root.title("Haber Uygulaması")
self.newsCategoryButton = []
self.haberKategorisi = ["genel", "eğlence", "Spor Dalları", "teknoloji"]

Uygulamanız için bir başlık işlevi gören bir etiket tanımlayın. Yerleştirmek istediğiniz ana öğeyi, görüntülemesi gereken metni, yazı tipi stilini, dolguyu ve sahip olması gereken arka plan rengini iletin. Kullan ambalaj() etiketin X yönündeki tüm alanı kaplaması için dolgu seçeneği.

tanımla EtiketÇerçevesi ve ana öğesini, sahip olması gereken arka plan rengiyle birlikte ayarlayın. Kullan yer() belirtilen koordinatlarda düzenlemek için işlev. Ek olarak, çerçevenin genişliğini ve yüksekliğini iletin.

 başlık = Etiket (self.root, metin="Haber Uygulaması", yazı tipi=("Times New Roman", 28, "gözü pek"), çeltik=2, bg="#ff007f").paket (dolgu=X)
F1 = Etiket Çerçevesi (self.root, bg="#fc6c85")
F1.yer (x=20y=80, genişlik=215, yükseklik=210)

uzunluğu boyunca uzanan bir for döngüsü tanımlayın. haberKedi liste. Daha önce tanımlanan çerçevede bir düğme tanımlayın. Görüntülenmesi gereken metni iletin ve büyük harfe dönüştürün. Düğmelerin genişliğini, kenarlık derinliğini, yazı tipi stilini ve arka plan rengini iletin. Kullan Kafes düğmeleri sütun biçiminde düzenlemek ve X ve Y yönlerinde dolgu eklemek için yönetici.

Düğmeyi ve haber alanını eklemek için bağlama yöntemini kullanın. tanımlar ki haber alanı kullanıcı tarafından sol fare tıklamasıyla işlev gerçekleşecektir. Bu düğmeleri şuraya ekleyin: haberKediDüğmesi liste daha önce tanımlandı.

için Ben içinde aralık (boy (self.newsCategory)):
b = Düğme (F1, text=self.newsCategory[i].upper(), genişlik=15, bd=3, yazı tipi="arial 14 kalın", bg="#c154c1")
b.grid (satır=i, sütun=0, padx=10, çeltik=5)
b.bind('', öz. Haber alanı)
self.newsCategoryButton.append (b)

Bir çerçeve tanımlayın ve onu yerleştirmek istediğiniz ana öğeyi ve sahip olması gereken kenarlık derinliğini iletin. Belirtilen koordinatlarda düzenleyin ve göreceli yükseklik ve genişliği geçin. kullanarak bir dikey kaydırma çubuğu tanımlayın. yönlendirmek parametresini seçin ve bu çerçeveye yerleştirin.

Bir metin widget'ı tanımlayın. Ana öğeyi, sahip olması gereken yazı tipi stili ve arka plan rengiyle birlikte bu çerçeve olarak iletin. değerini ayarlarken kaydırma komutu gibi scroll_y.set kullanıcı etkileşiminde kaydırma çubuğunun mevcut konumunu alır.

 F2 = Çerçeve (self.root, bd=3)
F2.yer (x=260y=80, yeniden genişlik=0.7, yeniden yükseklik=0.8)
scroll_y = Kaydırma çubuğu (F2, yönlendirme=DİKEY)
self.txtarea = Metin (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "gözü pek"), bg="#fc6c85")

Kullan ambalaj() Kaydırma çubuğunu çerçevenin sağ tarafına yerleştirmek ve tüm alanı Y yönünde kaplamak için dolgu seçeneğini kullanın. Komut parametresini şu şekilde ayarlarken txtarea.yview, kaydırma çubuğunun hareketi yukarı ve aşağı işlevlerine bağlanır. Böylece, kullanıcı kaydırma çubuğuyla etkileşime geçtiğinde, metin alanının görünümleri buna göre değişir.

Kullan sokmak() kullanıcıdan bir kategori seçmesini ve onu mevcut herhangi bir metnin sonuna yerleştirmesini isteme yöntemi. Kullan ambalaj() metin parçacığından X ve Y yönündeki alanı almasını ve gerekirse ek alan atamasını istemek için genişletmek parametre.

 scroll_y.pack (kenar=SAĞ, dolgu=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Bir kategori seç:")
self.txtarea.pack (fill=İKİSİ, genişlet=1)

Haberleri API Yanıtından Çıkarma

Bir işlev tanımlayın, Haber alanı() sınıfın mevcut örneğini ve button olayını kabul eder. Kullanıcının seçtiği haberin kategorisini küçük harfle iletin ve saklayın. Gerekli parametreleri temel URL'ye iletin ve ilk dizinden son dizine kadar daha önce mevcut olan tüm metni silin. Sınır için bir çizgi ekleyin.

tanımla denemek temel URL'de tanımlanan sunucuya bir HTTP GET isteğini bloke edin ve gönderin. Yanıtı JSON biçimine dönüştürün ve anahtara sahip içeriği şu şekilde çıkarın: nesne ve bir değişkende saklayın.

kesinhaber alanı(kendi, olay):
yazın = event.widget.cget('metin').daha düşük()
BASE_URL = F' http://newsapi.org/v2/top-headlines? ülke=in&kategori={tip}&apiKey=' + apiKey
self.txtarea.delete("1.0", SON)
self.txtarea.insert (END, "\N")
denemek:
makaleler = (requests.get (BASE_URL).json())['nesne']

Getirilen makale sayısı sıfır değilse, bir döngü çalıştırın ve makaleleri tek tek metin widget'ına ekleyin. Başlığı, ardından açıklamayı, içeriği ve URL'yi ayrı satırlarda görüntüleyin. Sınır işareti için iki satır ekleyin. Makale sayısı sıfır ise, o kategori için haber bulunmadığını gösterin.

try bloğu başarısız olursa, kullanıcılara uygun hata mesajını görüntülemek için istisna bloğunu kullanın.

eğer (makaleler != 0):
için Ben içinde aralık (len (makaleler)):
self.txtarea.insert (END, F"{makaleler[i]['başlık']}\N")
self.txtarea.insert (END, F"{makaleler[i]['Tanım']}\N")
self.txtarea.insert (END, F"{makaleler[i]['içerik']}\N")
self.txtarea.insert (END, devamını oku...{makaleler[i]['url']}\N")
self.txtarea.insert (END, "\N")
self.txtarea.insert (END, "\N")
başka:
self.txtarea.insert (END, "Haber yok")
hariç İstisna gibi e:
mesaj kutusu.showerror('HATA', "Üzgünüm, bazı sorunlarla karşılaştık. Lütfen internet bağlantınızı kontrol edin ve tekrar deneyin.")

Sınıfın bir örneğini oluşturun ve onu başlatın. bu Ana döngü() işlevi, Python'a Tkinter olay döngüsünü çalıştırmasını ve siz pencereyi kapatana kadar olayları dinlemesini söyler.

kök = Tk()
obj = NewsApp (kök)
root.mainloop()

Tüm kodu bir araya getirin ve uygulamanız haberleri farklı kategorilere göre görüntülemeye hazır.

Haber Uygulamasının Çıktısı

Programı çalıştırırken, metin alanı bir kategori seçmenizi ister. Düğmelerden herhangi birine tıklandığında, o kategori için açıklama, içerik ve bağlantısını (varsa) iki satırla ayrılmış olarak görüntüler.

Python Projeniz için Yararlı API'ler

API'ler, yeni uygulamaları mevcut yazılım sistemleriyle entegre etmek için çok kullanışlıdır. Herhangi bir bölgenin gerçek zamanlı hava durumu bilgilerini almak için OpenWeatherMap API'sini ve haritaları web sitenizin uygulamasına dahil etmek için Google Haritalar API'sini kullanabilirsiniz. GitHub görevlerini GitHub API aracılığıyla otomatikleştirebilir ve video konferansı entegre etmek için Zoom API'sini kullanabilirsiniz.

OpenAI'nin API'sini kullanarak ChatGPT'nin gücünü kendi uygulamalarınızdan da kullanabilir ve yapay zeka destekli bazı büyüleyici uygulamalar oluşturabilirsiniz.