Pelajari cara membuat aplikasi Berita Anda sendiri dengan Python dan pustaka Tkinter.

Di dunia yang serba cepat ini, selalu mengikuti berita terbaru sangatlah penting. Bangun aplikasi Berita Anda sendiri yang memberi Anda berita di berbagai kategori seperti hiburan, olahraga, dan teknologi yang dapat diakses di platform apa pun tepat di ujung jari Anda.

Anda akan mengembangkan aplikasi ini menggunakan Tkinter, pustaka GUI standar untuk Python, dan menjalankannya menggunakan News API yang mendapatkan artikel dari lebih dari 80.000 sumber.

Instal modul tkinter dan permintaan

Tkinter adalah modul lintas platform, sederhana, dan mudah digunakan yang dapat Anda gunakan untuk membuat antarmuka pengguna grafis dengan cepat. Beberapa dari aplikasi yang dapat Anda buat menggunakan Tkinter termasuk pemutar musik, kalender, alat konversi berat, permainan campur aduk kata, dan sebagainya.

Untuk memasang tkinter di sistem Anda, jalankan perintah berikut di terminal:

pip instal tkinter

Itu permintaan modul membuatnya lebih mudah untuk membuat permintaan HTTP. Dengan ini,

instagram viewer
Anda dapat mengembangkan aplikasi menarik seperti pemeriksa status situs web, pengikis web, bot pemantau pasar saham, dan penguji kinerja situs web. Untuk menginstal modul permintaan, buka terminal dan jalankan perintah berikut:

permintaan instalasi pip

Anda dapat menemukan seluruh kode sumber aplikasi Berita menggunakan Python di sini repositori GitHub.

Hasilkan Kunci API Berita

Mulailah dengan mengimpor perpustakaan yang diperlukan. Daftar di API Berita dan hasilkan kunci API Anda. Dengan akun pengembang gratis, Anda dapat mengirimkan hingga 100 permintaan setiap hari, yang bagus untuk diuji dan dimulai. Simpan API dalam variabel yang akan Anda gunakan nanti dengan URL dasar untuk mengambil berita utama teratas menurut negara Anda.

dari tkinter impor *
dari tkinter impor kotak pesan
impor permintaan

apiKey = 'KUNCI_API_ANDA'

Tentukan Struktur Aplikasi

Tentukan kelas, Aplikasi Berita. Referensi kunci API Dan jenis variabel secara global. Tentukan objek kelas dan inisialisasi jendela root. Tetapkan dimensi dan judul aplikasi Anda. Tentukan dua daftar, Anda akan menggunakan daftar pertama untuk menentukan tombol dan yang kedua untuk menentukan kategori berita yang ingin Anda tampilkan di aplikasi Anda.

kelasAplikasi Berita:
global apiKey, ketik
def__init__(diri, akar):
self.root = akar
self.root.geometri('1000x650')
self.root.title("Aplikasi Berita")
self.newsCategoryButton = []
self.newsCategory = ["umum", "hiburan", "olahraga", "teknologi"]

Tentukan label yang berfungsi sebagai judul untuk aplikasi Anda. Lewati elemen induk tempat Anda ingin menempatkannya, teks yang harus ditampilkan, gaya font, padding, dan warna latar belakang yang harus dimiliki. Menggunakan mengemas() isi opsi untuk membuat label menempati seluruh ruang dalam arah X.

Tentukan a LabelFrame dan atur elemen induknya bersama dengan warna latar belakang yang harus dimilikinya. Menggunakan tempat() berfungsi untuk mengaturnya pada koordinat yang ditentukan. Selain itu, lewati lebar dan tinggi bingkai.

 judul = Label (self.root, teks="Aplikasi Berita", jenis huruf=("kali romawi baru", 28, "berani"), padi=2, bg='#ff007f'.kemasan (isi=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.tempat (x=20, y=80, lebar=215, tinggi =210)

Tentukan for loop yang berjalan melalui panjang newsCat daftar. Tentukan tombol dalam bingkai yang ditentukan sebelumnya. Berikan teks yang seharusnya ditampilkan dan ubah menjadi huruf besar. Lewati lebar, kedalaman batas, gaya font, dan warna latar belakang tombol. Menggunakan kisi manajer untuk mengatur tombol dalam format kolom dan menambahkan padding di arah X dan Y.

Gunakan metode ikat untuk melampirkan tombol dan area berita. mendefinisikan bahwa Area berita fungsi akan terjadi pada klik kiri mouse oleh pengguna. Tambahkan tombol-tombol ini ke newsCatButton daftar yang ditentukan sebelumnya.

untuk Saya di dalam rentang (len (self.newsCategory)):
b = Tombol (F1, text=self.newsCategory[i].upper(), width=15, bd=3, jenis huruf="arial 14 tebal", bg='#c154c1')
b.grid (baris=i, kolom=0, padx=10, padi=5)
b.mengikat('', diri sendiri. Area berita)
self.newsCategoryButton.append (b)

Tentukan bingkai dan berikan elemen induk tempat Anda ingin menempatkannya dan kedalaman batas yang seharusnya. Atur pada koordinat yang ditentukan dan berikan tinggi dan lebar relatif. Tentukan scrollbar vertikal menggunakan mengorientasikan parameter dan letakkan di bingkai ini.

Tentukan widget teks. Lewati elemen induk sebagai bingkai ini bersama dengan gaya font dan warna latar belakang yang harus dimilikinya. Pada pengaturan nilai perintah yscroll sebagai scroll_y.set itu mendapatkan posisi scrollbar saat ini pada interaksi pengguna.

 F2 = Bingkai (self.root, bd=3)
F2.tempat (x=260, y=80, lebar rel=0.7, tinggi rel=0.8)
scroll_y = Bilah gulir (F2, orientasi=VERTIKAL)
self.txtarea = Teks (F2, yscrollcommand=scroll_y.set, font=("kali romawi baru", 15, "berani"), bg='#fc6c85')

Menggunakan mengemas() isi opsi untuk menempatkan bilah gulir di sisi kanan bingkai dan menempati seluruh ruang dalam arah Y. Pada pengaturan parameter perintah sebagai txtarea.yview, gerakan bilah gulir ditautkan ke fungsi atas dan bawah. Jadi, saat pengguna berinteraksi dengan scrollbar, tampilan area teks akan berubah.

Menggunakan menyisipkan() metode untuk meminta pengguna memilih kategori dan menempatkannya di akhir teks yang ada. Menggunakan mengemas() metode untuk meminta widget teks mengambil ruang dalam arah X dan Y dan menetapkan ruang tambahan jika perlu menggunakan memperluas parameter.

 scroll_y.pack (sisi=KANAN, isi=Y)
scroll_y.config (perintah=self.txtarea.yview)
self.txtarea.insert (AKHIR,"Pilih Kategori:")
self.txtarea.pack (isi=KEDUA, luaskan=1)

Ekstrak Berita Dari Respons API

Tentukan fungsi, Area berita() yang menerima instance kelas saat ini dan event tombol. Lewati kategori berita yang dipilih pengguna dalam huruf kecil dan simpan. Lewati parameter yang diperlukan ke URL dasar dan hapus teks apa pun yang ada sebelumnya dari indeks pertama ke yang terakhir. Sisipkan garis untuk demarkasi.

Tentukan a mencoba memblokir dan mengirim permintaan HTTP GET ke server yang ditentukan di URL dasar. Ubah respons menjadi format JSON dan ekstrak konten yang memiliki kunci sebagai artikel dan menyimpannya dalam sebuah variabel.

defArea berita(diri, acara):
ketik = event.widget.cget('teks').lebih rendah()
BASE_URL = F' http://newsapi.org/v2/top-headlines? negara=dalam&kategori={jenis}&apiKey=' + apiKey
self.txtarea.delete("1.0", AKHIR)
self.txtarea.insert (AKHIR, "\N")
mencoba:
artikel = (requests.get (BASE_URL).json())['artikel']

Jika jumlah artikel yang diambil tidak nol, jalankan loop dan sisipkan artikel satu per satu di widget teks. Tampilkan judul, diikuti deskripsi, konten, dan URL dalam baris terpisah. Sisipkan dua baris untuk demarkasi. Jika jumlah artikelnya nol, tampilkan bahwa tidak ada berita yang tersedia untuk kategori tersebut.

Jika blok percobaan gagal, gunakan blok pengecualian untuk menampilkan pesan kesalahan yang sesuai kepada pengguna.

jika (artikel != 0):
untuk Saya di dalam rentang (len (artikel)):
self.txtarea.insert (AKHIR, F"{artikel[i]['judul']}\N")
self.txtarea.insert (AKHIR, F"{artikel[i]['keterangan']}\N")
self.txtarea.insert (AKHIR, F"{artikel[i]['isi']}\N")
self.txtarea.insert (AKHIR, f"baca lebih lanjut...{artikel[i]['url']}\N")
self.txtarea.insert (AKHIR, "\N")
self.txtarea.insert (AKHIR, "\N")
kalau tidak:
self.txtarea.insert (AKHIR, "Tidak ada berita tersedia")
kecuali Pengecualian sebagai e:
kotak pesan.showerror('KESALAHAN', "Maaf, kami mengalami beberapa masalah. Silakan periksa koneksi internet dan coba lagi.")

Buat instance kelas dan inisialisasi. Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.

akar = Tk()
obj = Aplikasi Berita (root)
root.mainloop()

Gabungkan semua kode dan aplikasi Anda siap menampilkan berita sesuai dengan kategori yang berbeda.

Keluaran Aplikasi Berita

Saat menjalankan program, area teks meminta untuk memilih kategori. Saat mengklik salah satu tombol, ini akan menampilkan berita dengan deskripsi, konten, dan tautannya (jika ada) untuk kategori tersebut yang dipisahkan oleh dua baris.

API yang Berguna untuk Proyek Python Anda

API sangat berguna untuk mengintegrasikan aplikasi baru dengan sistem perangkat lunak yang ada. Anda dapat menggunakan OpenWeatherMap API untuk mengambil informasi cuaca real-time dari area mana pun dan Google Maps API untuk memasukkan peta ke dalam aplikasi situs web Anda. Anda dapat mengotomatiskan tugas GitHub melalui GitHub API dan menggunakan Zoom API untuk mengintegrasikan konferensi video.

Anda juga dapat menggunakan kekuatan ChatGPT dari dalam aplikasi Anda sendiri menggunakan API OpenAI dan membuat beberapa aplikasi bertenaga AI yang menarik.