למד כיצד ליצור אפליקציית חדשות משלך עם Python וספריית Tkinter.
בעולם המהיר הזה, להישאר מעודכן בחדשות האחרונות הוא חיוני. בנה אפליקציית חדשות משלך שמעבירה לך חדשות על פני קטגוריות שונות כגון בידור, ספורט וטכנולוגיה הנגישה בכל פלטפורמה ממש בהישג ידך.
אתה תפתח את האפליקציה הזו באמצעות Tkinter, ספריית ה-GUI הסטנדרטית עבור Python, ותפעיל אותה באמצעות ה-News API שמקבל מאמרים מיותר מ-80,000 מקורות.
התקן tkinter ומבקש מודולים
Tkinter הוא מודול חוצה פלטפורמות, פשוט וידידותי למשתמש שאתה יכול להשתמש בהם כדי ליצור ממשקי משתמש גרפיים במהירות. חלק מה יישומים שאתה יכול לבנות באמצעות Tkinter כוללים נגן מוזיקה, לוח שנה, כלי המרת משקל, משחק ערבוביה של מילים וכן הלאה.
להתקין tkinter במערכת שלך, הפעל את הפקודה הבאה בטרמינל:
pip להתקין tkinter
ה בקשות מודול מקל על ביצוע בקשות HTTP. עם זה, אתה יכול לפתח יישומים מעניינים כגון בודק סטטוס אתרים, מגרד אינטרנט, בוט מוניטור בבורסה ובוחן ביצועי אתרים. כדי להתקין את מודול הבקשות, פתח את הטרמינל והפעל את הפקודה הבאה:
בקשות להתקנת pip
אתה יכול למצוא את כל קוד המקור של אפליקציית החדשות באמצעות Python כאן מאגר GitHub.
צור את מפתח ה-API של חדשות
התחל בייבוא הספריות הנדרשות. הרשמה ב חדשות API וצור את מפתח ה-API שלך. עם חשבון המפתח החינמי, אתה יכול לשלוח עד 100 בקשות מדי יום, וזה נהדר לבדיקה ולהתחיל. אחסן את ה-API במשתנה שבו תשתמש מאוחר יותר עם כתובת האתר הבסיסית כדי להביא את הכותרות העליונות בהתאם למדינה שלך.
מ tkinter יְבוּא *
מ tkinter יְבוּא תיבת הודעות
יְבוּא בקשות
apiKey = 'YOUR_API_KEY'
הגדר את מבנה האפליקציה
הגדירו מחלקה, NewsApp. התייחס ל apiKey ו סוּג משתנים ברחבי העולם. הגדר אובייקט של המחלקה ואתחול חלון השורש. הגדר את המידות והכותרת של הבקשה שלך. הגדר שתי רשימות, אתה תשתמש ברשימה הראשונה כדי להגדיר את הכפתורים והשנייה כדי להגדיר לקטגוריות של חדשות שאתה רוצה להציג באפליקציה שלך.
מעמדNewsApp:
גלוֹבָּלִי apiKey, הקלד
def__init__(עצמי, שורש):
self.root = שורש
self.root.geometry('1000x650')
self.root.title("אפליקציית חדשות")
self.newsCategoryButton = []
self.newsCategory = ["כללי", "בידור", "ספורט", "טֶכנוֹלוֹגִיָה"]
הגדר תווית המשמשת ככותרת ליישום שלך. העבירו את אלמנט האב שבו תרצו למקם אותו, הטקסט שהוא אמור להציג, סגנון הגופן, הריפוד וצבע הרקע שהוא צריך להיות. להשתמש ב חבילה() אפשרות מילוי כדי לגרום לתווית לתפוס את כל החלל בכיוון X.
תגדיר א LabelFrame והגדר את אלמנט האב שלו יחד עם צבע הרקע שהוא צריך להחזיק. להשתמש ב מקום() פונקציה לארגן אותו בקואורדינטות שצוינו. בנוסף, העבר את הרוחב והגובה של המסגרת.
title = Label (self.root, text="אפליקציית חדשות", גופן=("Times New Roman", 28, "נוֹעָז"), פאדי=2, bg='#ff007f').pack (מילוי=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.place (x=20, y=80, רוחב=215, גובה=210)
הגדר לולאת for שעוברת לאורך ה- newsCat רשימה. הגדר כפתור במסגרת שהוגדרה קודם לכן. העבר את הטקסט שהוא אמור להציג והמר אותו לאותיות רישיות. העבר את הרוחב, את עומק הגבול, את סגנון הגופן ואת צבע הרקע של הכפתורים. להשתמש ב רֶשֶׁת מנהל לסדר את הכפתורים בפורמט עמודים ולהוסיף ריפוד בכיווני X ו-Y.
השתמש בשיטת ה-bind כדי לצרף את הכפתור ואת אזור החדשות. מגדיר כי ה אזור חדשות הפונקציה תתרחש בלחיצת העכבר השמאלית על ידי המשתמש. צרף לחצנים אלה ל- newsCatButton רשימה שהוגדרה קודם לכן.
ל אני ב טווח (len (self.newsCategory)):
b = Button (F1, text=self.newsCategory[i].upper(), width=15, bd=3, גופן="אריאל 14 מודגש", bg='#c154c1')
b.grid (שורה=i, עמודה=0, padx=10, פאדי=5)
b.bind('' , עצמי. אזור החדשות)
self.newsCategoryButton.append (ב)
הגדירו מסגרת והעבירו לה את אלמנט האב שברצונכם למקם אותו ואת עומק הגבול שאמור להיות לו. ארגן אותו בקואורדינטות שצוינו והעביר את הגובה והרוחב היחסיים. הגדר פס גלילה אנכי באמצעות ה מִזְרָח פרמטר והצב אותו במסגרת זו.
הגדר ווידג'ט טקסט. העבר את אלמנט האב כמסגרת זו יחד עם סגנון הגופן וצבע הרקע שהוא צריך להחזיק. על הגדרת הערך של yscrollcommand כפי ש scroll_y.set הוא מקבל את המיקום הנוכחי של פס הגלילה באינטראקציה של המשתמש.
F2 = Frame (self.root, bd=3)
F2.place (x=260, y=80, relwidth=0.7, reheight=0.8)
scroll_y = סרגל גלילה (F2, orient=VERTICAL)
self.txtarea = טקסט (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "נוֹעָז"), bg='#fc6c85')
להשתמש ב חבילה() אפשרות מילוי למקם את פס הגלילה בצד ימין של המסגרת ולתפוס את כל החלל בכיוון Y. על הגדרת פרמטר הפקודה כ txtarea.yview, התנועה של פס הגלילה מקושרת לפונקציות למעלה ולמטה. לכן, כאשר המשתמש מקיים אינטראקציה עם פס הגלילה, התצוגות של אזור הטקסט משתנות בהתאם.
להשתמש ב לְהַכנִיס() שיטה לבקש מהמשתמש לבחור קטגוריה ולמקם אותה בסוף כל טקסט קיים. להשתמש ב חבילה() שיטה לבקש מווידג'ט הטקסט לקחת את הרווח בכיוון X ו-Y ולהקצות שטח נוסף במידת הצורך באמצעות לְהַרְחִיב פָּרָמֶטֶר.
scroll_y.pack (צד=ימינה, מילוי=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"בחר קטגוריה:")
self.txtarea.pack (fill=BOTH, expand=1)
חלץ חדשות מתגובת ה-API
הגדר פונקציה, Newsarea() שמקבל את המופע הנוכחי של המחלקה ואת אירוע הלחצן. עברו את הקטגוריה של החדשות שהמשתמש בחר באותיות קטנות ואחסנו אותה. העבר את הפרמטרים הנדרשים לכתובת ה-URL הבסיסית ומחק כל טקסט שהיה קודם מהאינדקס הראשון ועד האחרון. הכנס קו לתיחום.
תגדיר א לְנַסוֹת לחסום ולשלוח בקשת HTTP GET לשרת המוגדר בכתובת ה-URL הבסיסית. המר את התגובה לפורמט JSON וחלץ את התוכן בעל המפתח as מאמרים ולאחסן אותו במשתנה.
defאזור חדשות(עצמי, אירוע):
type = event.widget.cget('טֶקסט').נמוך יותר()
BASE_URL = ו' http://newsapi.org/v2/top-headlines? country=in&category={סוּג}&apiKey=' + apiKey
self.txtarea.delete("1.0", END)
self.txtarea.insert (END, "\n")
לְנַסוֹת:
articles = (requests.get (BASE_URL).json())['מאמרים']
אם מספר המאמרים שהובאו אינו אפס, הפעל לולאה והכנס את המאמרים בזה אחר זה בווידג'ט הטקסט. הצג את הכותרת, ואחריה את התיאור, התוכן וכתובת האתר בשורות נפרדות. הכנס שתי שורות לתיחום. אם מספר המאמרים הוא אפס, הצג שאין חדשות זמינות עבור הקטגוריה הספציפית הזו.
אם חסימת הניסיון נכשלת, השתמש בבלוק החריג כדי להציג את הודעת השגיאה המתאימה למשתמשים.
אם (מאמרים != 0):
ל אני ב טווח (len (מאמרים)):
self.txtarea.insert (END, ו"{מאמרים[i]['כותרת']}\n")
self.txtarea.insert (END, ו"{מאמרים[i]['תיאור']}\n")
self.txtarea.insert (END, ו"{מאמרים[i]['תוֹכֶן']}\n")
self.txtarea.insert (END, f" קרא עוד...{מאמרים[i]['כתובת אתר']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
אַחֵר:
self.txtarea.insert (END, "אין חדשות זמינות")
מלבד יוצא מן הכלל כפי ש ה:
messagebox.showerror('שְׁגִיאָה', "סליחה, נתקלנו בכמה בעיות. אנא בדוק את חיבור האינטרנט ונסה שוב.")
צור מופע של המחלקה ואתחול אותו. ה mainloop() הפונקציה אומרת לפייתון להפעיל את לולאת האירועים של Tkinter ולהקשיב לאירועים עד שתסגור את החלון.
root = Tk()
obj = NewsApp (שורש)
root.mainloop()
חבר את כל הקוד והאפליקציה שלך מוכנה להציג חדשות לפי קטגוריות שונות.
הפלט של אפליקציית החדשות
בהפעלת התוכנית, אזור הטקסט מבקש לבחור קטגוריה. בלחיצה על כל אחד מהלחצנים, הוא מציג את החדשות עם התיאור, התוכן והקישור שלה (אם קיים) עבור אותה קטגוריה מופרדים בשתי שורות.
ממשקי API שימושיים עבור פרויקט Python שלך
ממשקי API שימושיים במיוחד לשילוב יישומים חדשים עם מערכות תוכנה קיימות. אתה יכול להשתמש ב- OpenWeatherMap API כדי לאחזר מידע מזג אוויר בזמן אמת של כל אזור וב-Google Maps API כדי לשלב מפות ביישום האתר שלך. אתה יכול להפוך משימות GitHub לאוטומטיות באמצעות GitHub API ולהשתמש ב-Zoom API לשילוב שיחות ועידה בווידאו.
אתה יכול גם להשתמש בכוח של ChatGPT מתוך האפליקציות שלך באמצעות ה-API של OpenAI וליצור כמה יישומים מרתקים המופעלים על ידי AI.