Μάθετε πώς να δημιουργείτε τη δική σας εφαρμογή Ειδήσεων με την Python και τη βιβλιοθήκη Tkinter.
Σε αυτόν τον κόσμο με γρήγορο ρυθμό, είναι πολύ σημαντικό να ενημερώνεστε για τα τελευταία νέα. Δημιουργήστε τη δική σας εφαρμογή Ειδήσεων που σας μεταφέρει νέα σε διάφορες κατηγορίες, όπως ψυχαγωγία, αθλήματα και τεχνολογία, προσβάσιμη σε οποιαδήποτε πλατφόρμα απευθείας στα χέρια σας.
Θα αναπτύξετε αυτήν την εφαρμογή χρησιμοποιώντας το Tkinter, την τυπική βιβλιοθήκη GUI για την Python, και θα την ενεργοποιήσετε χρησιμοποιώντας το News API που λαμβάνει άρθρα από περισσότερες από 80.000 πηγές.
Εγκαταστήστε το tkinter και τις μονάδες αιτημάτων
Το Tkinter είναι μια λειτουργική μονάδα πολλαπλών πλατφορμών, απλή και φιλική προς το χρήστη που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε γρήγορα γραφικά περιβάλλοντα χρήστη. Κάποια από τα Οι εφαρμογές που μπορείτε να δημιουργήσετε χρησιμοποιώντας το Tkinter περιλαμβάνουν ένα πρόγραμμα αναπαραγωγής μουσικής, ημερολόγιο, εργαλείο μετατροπής βάρους, παιχνίδι σύγχυσης λέξεων και ούτω καθεξής.
Για εγκατάσταση tkinter στο σύστημά σας, εκτελέστε την ακόλουθη εντολή στο τερματικό:
pip εγκατάσταση tkinter
ο αιτήσεων Η ενότητα διευκολύνει την υποβολή αιτημάτων HTTP. Με αυτό, μπορείτε να αναπτύξετε ενδιαφέρουσες εφαρμογές, όπως έναν έλεγχο κατάστασης ιστότοπου, web scraper, bot παρακολούθησης χρηματιστηρίου και ελεγκτή απόδοσης ιστότοπου. Για να εγκαταστήσετε τη μονάδα αιτημάτων, ανοίξτε το τερματικό και εκτελέστε την ακόλουθη εντολή:
αιτήματα εγκατάστασης pip
Μπορείτε να βρείτε ολόκληρο τον πηγαίο κώδικα της εφαρμογής Ειδήσεις χρησιμοποιώντας Python σε αυτό Αποθετήριο GitHub.
Δημιουργήστε το κλειδί API Ειδήσεων
Ξεκινήστε εισάγοντας τις απαιτούμενες βιβλιοθήκες. Εγγραφή στο News API και δημιουργήστε το κλειδί API σας. Με τον δωρεάν λογαριασμό προγραμματιστή, μπορείτε να στέλνετε έως και 100 αιτήματα καθημερινά, κάτι που είναι εξαιρετικό για δοκιμή και για να ξεκινήσετε. Αποθηκεύστε το API σε μια μεταβλητή που θα χρησιμοποιήσετε αργότερα με τη βασική διεύθυνση URL για να λάβετε τις κορυφαίες επικεφαλίδες ανάλογα με τη χώρα σας.
από tkinter εισαγωγή *
από tkinter εισαγωγή κουτί μηνυμάτων
εισαγωγή αιτήσεων
apiKey = 'YOUR_API_KEY'
Καθορίστε τη δομή της εφαρμογής
Ορίστε μια τάξη, Εφαρμογή Ειδήσεων. Αναφορά στο apiKey και τύπος μεταβλητές παγκοσμίως. Ορίστε ένα αντικείμενο της κλάσης και αρχικοποιήστε το ριζικό παράθυρο. Ορίστε τις διαστάσεις και τον τίτλο της αίτησής σας. Ορίστε δύο λίστες, θα χρησιμοποιήσετε την πρώτη λίστα για να ορίσετε τα κουμπιά και τη δεύτερη για να ορίσετε κατηγορίες ειδήσεων που θέλετε να εμφανίζονται στην εφαρμογή σας.
τάξηΕφαρμογή Ειδήσεων:
παγκόσμια apiKey, πληκτρολογήστε
def__μέσα σε αυτό__(εαυτός, ρίζα):
αυτο.ρίζα = ρίζα
self.root.geometry('1000x650')
self.root.title(«Ειδήσεις»)
self.newsCategoryButton = []
self.newsCategory = ["γενικός", "ψυχαγωγία", "Αθλητισμός", "τεχνολογία"]
Καθορίστε μια ετικέτα που λειτουργεί ως τίτλος στην αίτησή σας. Περάστε το γονικό στοιχείο στο οποίο θέλετε να το τοποθετήσετε, το κείμενο που πρέπει να εμφανίζεται, το στυλ γραμματοσειράς, το padding και το χρώμα φόντου που πρέπει να έχει. Χρησιμοποιήστε το πακέτο() επιλογή γεμίσματος για να κάνετε την ετικέτα να καταλαμβάνει ολόκληρο το χώρο προς την κατεύθυνση Χ.
Ορίστε α Πλαίσιο ετικέτας και ορίστε το γονικό στοιχείο του μαζί με το χρώμα φόντου που θα έπρεπε να έχει. Χρησιμοποιήστε το θέση() λειτουργία για να το οργανώσει σε καθορισμένες συντεταγμένες. Επιπλέον, περάστε το πλάτος και το ύψος του πλαισίου.
title = Label (self.root, text=«Ειδήσεις», γραμματοσειρά=("times new roman", 28, "τολμηρός"), pady=2, bg='#ff007f'.pack (fill=X)
F1 = LabelFrame (self.root, bg='#fc6c85')
F1.τόπος (x=20, y=80, πλάτος=215, ύψος=210)
Ορίστε έναν βρόχο for που διατρέχει το μήκος του newsCat λίστα. Ορίστε ένα κουμπί στο πλαίσιο που καθορίστηκε προηγουμένως. Περάστε το κείμενο που πρέπει να εμφανίσει και μετατρέψτε το σε κεφαλαία. Περάστε το πλάτος, το βάθος περιγράμματος, το στυλ γραμματοσειράς και το χρώμα φόντου των κουμπιών. Χρησιμοποιήστε το πλέγμα διαχειριστή για να τακτοποιήσει τα κουμπιά σε μορφή στήλης και να προσθέσει padding στις κατευθύνσεις X και Y.
Χρησιμοποιήστε τη μέθοδο bind για να επισυνάψετε το κουμπί και την περιοχή ειδήσεων. ορίζει ότι το Περιοχή Ειδήσεων η λειτουργία θα εμφανιστεί με το αριστερό κλικ του ποντικιού από το χρήστη. Προσθέστε αυτά τα κουμπιά στο newsCatButton λίστα που ορίστηκε νωρίτερα.
Για Εγώ σε εύρος (len (self.newsCategory)):
b = Κουμπί (F1, text=self.newsCategory[i].upper(), width=15, bd=3, γραμματοσειρά="arial 14 bold", bg='#c154c1')
b.grid (σειρά=i, στήλη=0, padx=10, pady=5)
b.bind('' , εαυτός. Περιοχή Ειδήσεων)
self.newsCategoryButton.append (β)
Ορίστε ένα πλαίσιο και περάστε του το γονικό στοιχείο στο οποίο θέλετε να το τοποθετήσετε και το βάθος περιγράμματος που πρέπει να έχει. Οργανώστε το σε καθορισμένες συντεταγμένες και περάστε το σχετικό ύψος και πλάτος. Ορίστε μια κάθετη γραμμή κύλισης χρησιμοποιώντας το Ανατολή παράμετρο και τοποθετήστε το σε αυτό το πλαίσιο.
Ορίστε ένα γραφικό στοιχείο κειμένου. Περάστε το γονικό στοιχείο ως αυτό το πλαίσιο μαζί με το στυλ γραμματοσειράς και το χρώμα φόντου που πρέπει να έχει. Κατά τη ρύθμιση της τιμής του εντολή yscroll όπως και scroll_y.set λαμβάνει την τρέχουσα θέση της γραμμής κύλισης στην αλληλεπίδραση με τον χρήστη.
F2 = Πλαίσιο (self.root, bd=3)
F2.τόπος (x=260, y=80, relwidth=0.7, αναύψος=0.8)
scroll_y = Γραμμή κύλισης (F2, orient=VERTICAL)
self.txtarea = Κείμενο (F2, yscrollcommand=scroll_y.set, γραμματοσειρά=("times new roman", 15, "τολμηρός"), bg='#fc6c85')
Χρησιμοποιήστε το πακέτο() επιλογή γεμίσματος για να τοποθετήσετε τη γραμμή κύλισης στη δεξιά πλευρά του πλαισίου και να καταλάβετε ολόκληρο τον χώρο προς την κατεύθυνση Υ. Κατά τη ρύθμιση της παραμέτρου εντολής ως txtarea.yview, η κίνηση της γραμμής κύλισης συνδέεται με τις λειτουργίες πάνω και κάτω. Έτσι, όταν ο χρήστης αλληλεπιδρά με τη γραμμή κύλισης, οι προβολές της περιοχής κειμένου αλλάζουν ανάλογα.
Χρησιμοποιήστε το εισάγετε() μέθοδος για να ζητήσετε από τον χρήστη να επιλέξει μια κατηγορία και να την τοποθετήσει στο τέλος οποιουδήποτε υπάρχοντος κειμένου. Χρησιμοποιήστε το πακέτο() μέθοδος για να ζητήσετε από το γραφικό στοιχείο κειμένου να πάρει το κενό στην κατεύθυνση X και Y και να εκχωρήσει επιπλέον χώρο, εάν χρειάζεται, χρησιμοποιώντας το επεκτείνουν παράμετρος.
scroll_y.pack (side=RIGHT, fill=Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (ΤΕΛΟΣ,"Επιλέξτε μία κατηγορία:")
self.txtarea.pack (fill=BOTH, expand=1)
Εξαγωγή ειδήσεων από την απάντηση API
Ορίστε μια συνάρτηση, Newsarea() που δέχεται την τρέχουσα παρουσία της κλάσης και το συμβάν του κουμπιού. Περάστε την κατηγορία των ειδήσεων που επέλεξε ο χρήστης με πεζά και αποθηκεύστε την. Περάστε τις απαιτούμενες παραμέτρους στη βασική διεύθυνση URL και διαγράψτε οποιοδήποτε κείμενο που υπήρχε νωρίτερα από το πρώτο ευρετήριο έως το τελευταίο. Εισαγάγετε μια γραμμή για οριοθέτηση.
Ορίστε α δοκιμάστε αποκλείστε και στείλτε ένα αίτημα HTTP GET στον διακομιστή που ορίζεται στη βασική διεύθυνση URL. Μετατρέψτε την απάντηση σε μορφή JSON και εξαγάγετε τα περιεχόμενα που έχουν το κλειδί ως άρθρα και αποθηκεύστε το σε μια μεταβλητή.
defΠεριοχή Ειδήσεων(εαυτός, γεγονός):
type = event.widget.cget('κείμενο').πιο χαμηλα()
BASE_URL = φά' http://newsapi.org/v2/top-headlines? χώρα=σε&κατηγορία={τύπος}&apiKey=' + apiKey
self.txtarea.delete("1.0", ΤΕΛΟΣ)
self.txtarea.insert (ΤΕΛΟΣ, "\n")
δοκιμάστε:
άρθρα = (requests.get (BASE_URL).json())['άρθρα']
Εάν ο αριθμός των άρθρων που ανακτήθηκαν δεν είναι μηδέν, εκτελέστε έναν βρόχο και εισαγάγετε τα άρθρα ένα προς ένα στο γραφικό στοιχείο κειμένου. Εμφανίστε τον τίτλο, ακολουθούμενο από την περιγραφή, το περιεχόμενο και τη διεύθυνση URL σε ξεχωριστές γραμμές. Εισαγάγετε δύο γραμμές για οριοθέτηση. Εάν ο αριθμός των άρθρων είναι μηδέν, εμφανίστε ότι δεν υπάρχουν διαθέσιμα νέα για τη συγκεκριμένη κατηγορία.
Εάν το μπλοκ δοκιμής αποτύχει, χρησιμοποιήστε το μπλοκ εξαίρεσης για να εμφανίσετε το κατάλληλο μήνυμα σφάλματος στους χρήστες.
αν (άρθρα != 0):
Για Εγώ σε εύρος (len (άρθρα)):
self.txtarea.insert (ΤΕΛΟΣ, φά"{άρθρα[i]['τίτλος']}\n")
self.txtarea.insert (ΤΕΛΟΣ, φά"{άρθρα[i]['περιγραφή']}\n")
self.txtarea.insert (ΤΕΛΟΣ, φά"{άρθρα[i]['περιεχόμενο']}\n")
self.txtarea.insert (ΤΕΛΟΣ, στ" Διαβάστε περισσότερα...{άρθρα[i]['url']}\n")
self.txtarea.insert (ΤΕΛΟΣ, "\n")
self.txtarea.insert (ΤΕΛΟΣ, "\n")
αλλού:
self.txtarea.insert (ΤΕΛΟΣ, "Δεν υπάρχουν διαθέσιμα νέα")
εκτός Εξαίρεση όπως και μι:
messagebox.showerror('ΛΑΘΟΣ', «Συγγνώμη, αντιμετωπίσαμε κάποια προβλήματα. Ελέγξτε τη σύνδεση στο Διαδίκτυο και δοκιμάστε ξανά.")
Δημιουργήστε ένα στιγμιότυπο της κλάσης και αρχικοποιήστε το. ο mainloop() Η συνάρτηση λέει στην Python να εκτελέσει τον βρόχο συμβάντων Tkinter και να ακούει συμβάντα μέχρι να κλείσει το παράθυρο.
ρίζα = Tk()
obj = NewsApp (root)
root.mainloop()
Συνδυάστε όλο τον κώδικα και η εφαρμογή σας είναι έτοιμη για εμφάνιση ειδήσεων σύμφωνα με διαφορετικές κατηγορίες.
Η Έξοδος της Εφαρμογής Ειδήσεων
Κατά την εκτέλεση του προγράμματος, η περιοχή κειμένου ζητά να επιλέξετε μια κατηγορία. Κάνοντας κλικ σε οποιοδήποτε από τα κουμπιά, εμφανίζει τις ειδήσεις με την περιγραφή, το περιεχόμενο και τον σύνδεσμό τους (εάν υπάρχει) για αυτήν την κατηγορία χωρισμένα με δύο γραμμές.
Χρήσιμα API για το έργο Python σας
Τα API είναι εξαιρετικά εύχρηστα για την ενσωμάτωση νέων εφαρμογών με υπάρχοντα συστήματα λογισμικού. Μπορείτε να χρησιμοποιήσετε το OpenWeatherMap API για να ανακτήσετε πληροφορίες για τον καιρό σε πραγματικό χρόνο οποιασδήποτε περιοχής και το Google Maps API για να ενσωματώσετε χάρτες στην εφαρμογή του ιστότοπού σας. Μπορείτε να αυτοματοποιήσετε τις εργασίες GitHub μέσω του GitHub API και να χρησιμοποιήσετε το Zoom API για την ενσωμάτωση της τηλεδιάσκεψης.
Μπορείτε επίσης να χρησιμοποιήσετε τη δύναμη του ChatGPT μέσα από τις δικές σας εφαρμογές χρησιμοποιώντας το API του OpenAI και να δημιουργήσετε μερικές συναρπαστικές εφαρμογές που υποστηρίζονται από AI.