تعرف على كيفية إنشاء تطبيق الأخبار الخاص بك باستخدام Python ومكتبة Tkinter.

في هذا العالم سريع الخطى ، يعد البقاء على اطلاع بآخر الأخبار أمرًا بالغ الأهمية. قم ببناء تطبيق الأخبار الخاص بك الذي يوفر لك الأخبار عبر فئات مختلفة مثل الترفيه والرياضة والتكنولوجيا التي يمكن الوصول إليها من أي منصة في متناول يدك.

ستقوم بتطوير هذا التطبيق باستخدام Tkinter ، مكتبة GUI القياسية لبيثون ، وتشغيلها باستخدام News API التي تحصل على مقالات من أكثر من 80،000 مصدر.

قم بتثبيت tkinter وطلبات الوحدات النمطية

Tkinter عبارة عن وحدة متعددة المنصات وبسيطة وسهلة الاستخدام يمكنك استخدامها لإنشاء واجهات مستخدم رسومية بسرعة. قليلا من ال تشمل التطبيقات التي يمكنك إنشاؤها باستخدام Tkinter مشغل موسيقىوالتقويم وأداة تحويل الوزن ولعبة الكلمات المختلطة وما إلى ذلك.

لتثبيت tkinter في نظامك ، قم بتشغيل الأمر التالي في الجهاز:

نقطة تثبيت tkinter

ال الطلبات الوحدة النمطية تجعل من السهل إنشاء طلبات HTTP. مع هذا، يمكنك تطوير تطبيقات مثيرة للاهتمام مثل مدقق حالة موقع الويب، مكشطة الويب ، روبوت مراقبة سوق الأسهم ، واختبار أداء موقع الويب. لتثبيت وحدة الطلبات ، افتح المحطة وقم بتشغيل الأمر التالي:

instagram viewer
طلبات تثبيت النقطة

يمكنك العثور على الكود المصدري الكامل لتطبيق News باستخدام Python في هذا مستودع جيثب.

قم بإنشاء مفتاح News API

ابدأ باستيراد المكتبات المطلوبة. اشترك في واجهة برمجة تطبيقات الأخبار وإنشاء مفتاح API الخاص بك. باستخدام حساب المطور المجاني ، يمكنك إرسال ما يصل إلى 100 طلب يوميًا ، وهو أمر رائع للاختبار والبدء. قم بتخزين API في متغير ستستخدمه لاحقًا مع عنوان URL الأساسي لجلب العناوين الرئيسية وفقًا لبلدك.

من tkinter يستورد *
من tkinter يستورد صندوق الرسائل
يستورد الطلبات

apiKey = "YOUR_API_KEY"

تحديد هيكل التطبيق

تحديد فئة ، NewsApp. الرجوع إلى مفتاح API و يكتب المتغيرات عالميا. تحديد كائن من الفئة وتهيئة نافذة الجذر. قم بتعيين أبعاد وعنوان التطبيق الخاص بك. حدد قائمتين ، ستستخدم القائمة الأولى لتحديد الأزرار والثانية لتعريف فئات الأخبار التي تريد عرضها في تطبيقك.

فصلNewsApp:
عالمي apiKey ، اكتب
def__فيه__(النفس ، الجذر):
self.root = الجذر
علم الهندسة الجذور الذاتية (1000 × 650)
self.root.title ("تطبيق الأخبار")
self.newsCategoryButton = []
self.newsCategory = ["عام", "ترفيه", "رياضات", "تكنولوجيا"]

حدد تسمية تعمل كعنوان لتطبيقك. مرر العنصر الأصل الذي تريد وضعه فيه ، والنص الذي يجب أن يعرضه ، ونمط الخط ، والحشو ، ولون الخلفية الذي يجب أن يكون عليه. استخدم ال علية() ملء الخيار لجعل التسمية تشغل المساحة بأكملها في الاتجاه X.

حدد أ التسمية وتعيين العنصر الأصلي مع لون الخلفية الذي يجب أن يمتلكه. استخدم ال مكان() وظيفة لتنظيمها في إحداثيات محددة. بالإضافة إلى ذلك ، قم بتمرير عرض الإطار وارتفاعه.

 العنوان = Label (self.root، text ="تطبيق الأخبار"، الخط = ("مرات رومان جديد", 28, "عريض") ، pady =2، bg ="# ff007f") .pack (ملء = X)
F1 = LabelFrame (جذر ذاتي ، bg ="# fc6c85")
F1.place (x =20، ص =80العرض =215الارتفاع =210)

حدد حلقة for التي تمر عبر طول ملف أخبار قائمة. حدد زرًا في الإطار المحدد مسبقًا. مرر النص الذي يجب أن يعرضه وقم بتحويله إلى أحرف كبيرة. قم بتمرير العرض وعمق الحدود ونمط الخط ولون خلفية الأزرار. استخدم ال شبكة مدير لترتيب الأزرار بتنسيق عمودي وإضافة حشوة في الاتجاهين X و Y.

استخدم طريقة الربط لإرفاق الزر ومنطقة الأخبار. يحدد أن ال Newsarea ستحدث الوظيفة عند النقر بالماوس الأيسر بواسطة المستخدم. قم بإلحاق هذه الأزرار بملف الأخبار قائمة محددة في وقت سابق.

ل أنا في النطاق (لين (self.newsCategory)):
ب = زر (F1 ، نص = self.newsCategory [i] .upper () ، العرض =15، bd =3، الخط ="arial 14 bold"، bg ="# c154c1")
b.grid (الصف = i ، العمود =0، بادكس =10، pady =5)
ب. ربط (''، الذات. منطقة الأخبار)
self.newsCategoryButton.append (ب)

حدد إطارًا وقم بتمرير العنصر الأصل الذي تريد وضعه فيه وعمق الحد الذي يجب أن يكون عليه. قم بتنظيمه في إحداثيات محددة وقم بتمرير الارتفاع والعرض النسبيين. تحديد شريط التمرير العمودي باستخدام توجيه المعلمة ووضعها في هذا الإطار.

تحديد عنصر واجهة النص. مرر العنصر الأصلي مثل هذا الإطار مع نمط الخط ولون الخلفية الذي يجب أن يمتلكه. عند تحديد قيمة ملف أمر yscroll مثل مجموعة scroll_y.set يحصل على الموضع الحالي لشريط التمرير عند تفاعل المستخدم.

 F2 = إطار (جذر ذاتي ، bd =3)
F2.place (x =260، ص =80، relwidth =0.7، relheight =0.8)
scroll_y = شريط التمرير (F2 ، الموجه = عمودي)
self.txtarea = نص (F2 ، yscrollcommand = scroll_y.set ، الخط = ("مرات رومان جديد", 15, "عريض") ، bg ="# fc6c85")

استخدم ال علية() ملء الخيار لوضع شريط التمرير على الجانب الأيمن من الإطار واحتلال المساحة بأكملها في الاتجاه Y. عند تعيين معلمة الأمر كـ txtarea.yview، يتم ربط حركة شريط التمرير بوظائف الأعلى والأسفل. لذلك ، عندما يتفاعل المستخدم مع شريط التمرير ، تتغير طرق عرض منطقة النص وفقًا لذلك.

استخدم ال إدراج() طريقة لمطالبة المستخدم بتحديد فئة ووضعها في نهاية أي نص موجود. استخدم ال علية() طريقة لمطالبة عنصر واجهة النص بأخذ المساحة في الاتجاهين X و Y وتخصيص مساحة إضافية إذا لزم الأمر باستخدام يوسع معامل.

 scroll_y.pack (الجانب = اليمين ، ملء = Y)
scroll_y.config (الأمر = self.txtarea.yview)
self.txtarea.insert (END ،"اختر تصنيف:")
self.txtarea.pack (ملء = كلاهما ، قم بتوسيع =1)

استخراج الأخبار من استجابة API

تحديد وظيفة ، منطقة الأخبار () الذي يقبل المثيل الحالي للفئة وحدث الزر. قم بتمرير فئة الأخبار التي حددها المستخدم بأحرف صغيرة وقم بتخزينها. قم بتمرير المعلمات المطلوبة إلى عنوان URL الأساسي وحذف أي نص موجود مسبقًا من الفهرس الأول إلى الفهرس الأخير. أدخل خط للترسيم.

حدد أ يحاول حظر وإرسال طلب HTTP GET إلى الخادم المحدد في عنوان URL الأساسي. قم بتحويل الاستجابة إلى تنسيق JSON واستخرج المحتويات التي تحتوي على المفتاح كـ مقالات وتخزينها في متغير.

defNewsarea(ذاتي ، حدث):
type = event.widget.cget ('نص').أدنى()
BASE_URL = F' http://newsapi.org/v2/top-headlines? country = in & category ={يكتب}& apiKey = ' + apiKey
self.txtarea.delete ("1.0"، نهاية)
self.txtarea.insert (END ، "\ن")
يحاول:
المقالات = (request.get (BASE_URL) .json ()) ['مقالات']

إذا لم يكن عدد المقالات التي تم جلبها صفراً ، فقم بتشغيل حلقة وإدراج المقالات واحدة تلو الأخرى في أداة النص. اعرض العنوان متبوعًا بالوصف والمحتوى وعنوان URL في سطور منفصلة. أدخل سطرين للترسيم. إذا كان عدد المقالات يساوي صفرًا ، فاعرض عدم توفر أخبار لهذه الفئة المعينة.

إذا فشل حظر المحاولة ، فاستخدم كتلة الاستثناء لعرض رسالة الخطأ المناسبة للمستخدمين.

لو (مقالات! = 0):
ل أنا في النطاق (لين (مقالات)):
self.txtarea.insert (END ، F"{مقالات [i] ['عنوان']}\ن")
self.txtarea.insert (END ، F"{مقالات [i] ['وصف']}\ن")
self.txtarea.insert (END ، F"{مقالات [i] ['محتوى']}\ن")
self.txtarea.insert (END ، f "اقرأ المزيد ...{مقالات [i] ["url"]}\ن")
self.txtarea.insert (END ، "\ن")
self.txtarea.insert (END ، "\ن")
آخر:
self.txtarea.insert (END ، "لا توجد أخبار")
يستثني استثناء مثل هـ:
messagebox.showerror ('خطأ', "عذرًا ، واجهتنا بعض المشكلات. يرجى التحقق من الاتصال بالإنترنت والمحاولة مرة أخرى ".)

قم بإنشاء مثيل للفئة وقم بتهيئته. ال mainloop () تخبر الوظيفة Python بتشغيل حلقة حدث Tkinter والاستماع إلى الأحداث حتى تغلق النافذة.

الجذر = Tk ()
obj = NewsApp (الجذر)
root.mainloop ()

ضع كل الكود معًا وسيكون تطبيقك جاهزًا لعرض الأخبار وفقًا لفئات مختلفة.

مخرجات تطبيق الأخبار

عند تشغيل البرنامج ، تطلب منطقة النص تحديد فئة. عند النقر فوق أي من الأزرار ، يتم عرض الأخبار مع الوصف والمحتوى والارتباط الخاص به (إن وجد) لتلك الفئة مفصولاً بسطرين.

واجهات برمجة تطبيقات مفيدة لمشروع Python الخاص بك

تعد واجهات برمجة التطبيقات سهلة الاستخدام للغاية لدمج التطبيقات الجديدة مع أنظمة البرامج الحالية. يمكنك استخدام OpenWeatherMap API لاسترداد معلومات الطقس في الوقت الفعلي لأي منطقة و Google Maps API لدمج الخرائط في تطبيق موقع الويب الخاص بك. يمكنك أتمتة مهام GitHub عبر واجهة برمجة تطبيقات GitHub واستخدام Zoom API لدمج مؤتمرات الفيديو.

يمكنك أيضًا استخدام قوة ChatGPT من داخل تطبيقاتك باستخدام واجهة برمجة تطبيقات OpenAI وإنشاء بعض التطبيقات الرائعة التي تعمل بالذكاء الاصطناعي.