Sužinokite, kaip sukurti savo naujienų programą naudodami Python ir Tkinter biblioteką.
Šiame sparčiai besivystančiame pasaulyje labai svarbu gauti naujausias naujienas. Sukurkite savo naujienų programą, kuri suteiks jums naujienas iš įvairių kategorijų, pvz., pramogų, sporto ir technologijų, pasiekiamas bet kurioje platformoje po ranka.
Kursite šią programą naudodami „Tkinter“, standartinę „Python“ GUI biblioteką, ir įjungsite ją naudodami naujienų API, kuri gauna straipsnius iš daugiau nei 80 000 šaltinių.
Įdiekite tkinter ir užklausų modulius
„Tkinter“ yra kelių platformų, paprastas ir patogus modulis kuriuos galite naudoti norėdami greitai sukurti grafines vartotojo sąsajas. Kai kurie iš Programose, kurias galite sukurti naudodami „Tkinter“, yra muzikos grotuvas, kalendorius, svorio konvertavimo įrankis, žodžių maišymo žaidimas ir pan.
Instaliuoti tkinteris savo sistemoje terminale paleiskite šią komandą:
pip įdiegti tkinter
The prašymus modulis palengvina HTTP užklausų pateikimą. Su šiuo,
galite kurti įdomias programas, pvz., svetainės būsenos tikrintuvą, žiniatinklio grandiklis, akcijų rinkos stebėjimo robotas ir svetainės našumo tikrintuvas. Norėdami įdiegti užklausų modulį, atidarykite terminalą ir paleiskite šią komandą:pip diegimo užklausos
Čia galite rasti visą naujienų programos šaltinio kodą naudodami Python GitHub saugykla.
Sugeneruokite naujienų API raktą
Pradėkite importuodami reikiamas bibliotekas. Registruotis adresu Naujienų API ir sugeneruokite savo API raktą. Naudodami nemokamą kūrėjo paskyrą kasdien galite išsiųsti iki 100 užklausų, o tai puiku išbandyti ir pradėti. Išsaugokite API kintamajame, kurį vėliau naudosite su baziniu URL, kad gautumėte populiariausias antraštes pagal savo šalį.
iš tkinteris importuoti *
iš tkinteris importuoti žinučių dėžutė
importuoti prašymus
apiKey = „YOUR_API_KEY“
Apibrėžkite programos struktūrą
Apibrėžkite klasę, „NewsApp“.. Nuoroda į apiKey ir tipo kintamieji visame pasaulyje. Apibrėžkite klasės objektą ir inicijuokite šakninį langą. Nustatykite savo programos matmenis ir pavadinimą. Apibrėžkite du sąrašus. Pirmąjį sąrašą naudosite mygtukams apibrėžti, o antrąjį – naujienų, kurias norite rodyti programoje, kategorijas.
klasė„NewsApp“.:
globalus apiKey, tipas
def__init__(aš, šaknis):
self.root = šaknis
self.root.geometry(„1000 x 650“)
self.root.title("Naujienų programa")
self.newsCategoryButton = []
self.newsCategory = ["bendras", "pramogos", "sportas", "technologija"]
Apibrėžkite etiketę, kuri veikia kaip jūsų programos pavadinimas. Perduokite pagrindinį elementą, į kurį norite jį įdėti, tekstą, kurį jis turi rodyti, šrifto stilių, užpildymą ir fono spalvą, kurią jis turėtų turėti. Naudoti paketas() užpildymo parinktis, kad etiketė užimtų visą erdvę X kryptimi.
Apibrėžkite a LabelFrame ir nustatykite pagrindinį elementą kartu su fono spalva, kurią jis turėtų turėti. Naudoti vieta () funkcija organizuoti jį nurodytomis koordinatėmis. Be to, perkelkite rėmo plotį ir aukštį.
title = Etiketė (self.root, text="Naujienų programa", šriftas=("Times New Roman", 28, "drąsus"), pady=2, bg=„#ff007f“.pack (užpildyti=X)
F1 = LabelFrame (self.root, bg=„# fc6c85“)
F1.vieta (x=20, y=80, plotis=215, aukštis =210)
Apibrėžkite for kilpą, kuri eina per ilgį naujienosKatė sąrašą. Apibrėžkite mygtuką anksčiau apibrėžtame rėmelyje. Perduokite tekstą, kuris turėtų būti rodomas, ir konvertuokite jį į didžiąsias raides. Perduokite mygtukų plotį, kraštinės gylį, šrifto stilių ir fono spalvą. Naudoti tinklelis tvarkyklę, kad išdėstytumėte mygtukus stulpelio formatu ir pridėtumėte užpildymą X ir Y kryptimis.
Norėdami pridėti mygtuką ir naujienų sritį, naudokite susiejimo metodą. apibrėžia, kad Naujienų sritis funkcija įvyks vartotojui spustelėjus kairiuoju pelės klavišu. Pridėkite šiuos mygtukus prie naujienosCatButton anksčiau apibrėžtas sąrašas.
dėl i in diapazonas (len (self.newsCategory)):
b = Mygtukas (F1, tekstas=self.newsCategory[i].upper(), plotis=15, bd=3, šriftas="Arial 14 bold", bg=„#c154c1“)
b.grid (eilutė=i, stulpelis=0, padx=10, pady=5)
b.bind('' , savarankiškai. naujienų sritis)
self.newsCategoryButton.apend (b)
Apibrėžkite rėmelį ir perduokite jam pagrindinį elementą, į kurį norite įdėti, ir kraštinės gylį, kurį jis turėtų turėti. Sutvarkykite jį nurodytomis koordinatėmis ir perduokite santykinį aukštį ir plotį. Apibrėžkite vertikalią slinkties juostą naudodami orientuotis parametrą ir įdėkite jį į šį rėmelį.
Apibrėžkite teksto valdiklį. Perduokite pagrindinį elementą kaip šį rėmelį kartu su šrifto stiliumi ir fono spalva, kurią jis turėtų turėti. Nustatydami reikšmę yscrollcommand kaip scroll_y.set ji gauna dabartinę slinkties juostos padėtį naudotojo sąveikos metu.
F2 = rėmelis (self.root, bd=3)
F2.vieta (x=260, y=80, relwidth=0.7, relheight=0.8)
scroll_y = slinkties juosta (F2, orientacija = VERTIKA)
self.txtarea = Tekstas (F2, yscrollcommand=scroll_y.set, font=("Times New Roman", 15, "drąsus"), bg=„# fc6c85“)
Naudoti paketas() užpildymo parinktis, kad slinkties juosta būtų dešinėje rėmelio pusėje ir užimtų visą erdvę Y kryptimi. Nustatydami komandos parametrą kaip txtarea.yview, slinkties juostos judėjimas susietas su aukštyn ir žemyn funkcijomis. Taigi, kai vartotojas sąveikauja su slinkties juosta, atitinkamai pasikeičia teksto srities rodiniai.
Naudoti Įdėti() būdas paprašyti vartotojo pasirinkti kategoriją ir įdėti ją į bet kurio esamo teksto pabaigą. Naudoti paketas() būdas paprašyti teksto valdiklio užimti tarpą X ir Y kryptimis ir, jei reikia, priskirti papildomos vietos naudojant išplėsti parametras.
scroll_y.pack (side = RIGHT, fill = Y)
scroll_y.config (command=self.txtarea.yview)
self.txtarea.insert (END,"Pasirinkite kategoriją:")
self.txtarea.pack (užpildyti = ABI, išplėsti =1)
Ištraukite naujienas iš API atsakymo
Apibrėžkite funkciją, Naujienų sritis () kuri priima dabartinį klasės egzempliorių ir mygtuko įvykį. Perduokite vartotojo pasirinktą naujienų kategoriją mažosiomis raidėmis ir išsaugokite. Perduokite reikiamus parametrus į bazinį URL ir ištrinkite bet kokį anksčiau pateiktą tekstą nuo pirmos iki paskutinės. Įterpkite demarkacijos eilutę.
Apibrėžkite a bandyti blokuoti ir išsiųsti HTTP GET užklausą serveriui, apibrėžtam baziniame URL. Konvertuokite atsakymą į JSON formatą ir ištraukite turinį, kurio raktas yra kaip straipsniai ir išsaugokite jį kintamajame.
defNaujienų sritis(aš, įvykis):
type = event.widget.cget('tekstas').žemesnis()
BASE_URL = f' http://newsapi.org/v2/top-headlines? country=in&category={type}&apiKey=' + apiKey
self.txtarea.delete("1.0", GALAS)
self.txtarea.insert (END, "\n")
bandyti:
straipsniai = (requests.get (BASE_URL).json())["straipsniai"]
Jei gautų straipsnių skaičius nėra nulis, paleiskite kilpą ir įterpkite straipsnius po vieną į teksto valdiklį. Atskirose eilutėse nurodykite pavadinimą, po to aprašą, turinį ir URL. Įveskite dvi eilutes demarkacijai. Jei straipsnių skaičius lygus nuliui, parodykite, kad tos konkrečios kategorijos naujienų nėra.
Jei bandymo blokas nepavyksta, naudokite išimčių bloką, kad vartotojams būtų rodomas atitinkamas klaidos pranešimas.
jeigu (straipsniai != 0):
dėl i in diapazonas (len (straipsniai)):
self.txtarea.insert (END, f"{straipsniai[i]["pavadinimas"]}\n")
self.txtarea.insert (END, f"{straipsniai[i]['apibūdinimas']}\n")
self.txtarea.insert (END, f"{straipsniai[i]['turinys']}\n")
self.txtarea.insert (END, f"skaityti daugiau...{straipsniai[i]['url']}\n")
self.txtarea.insert (END, "\n")
self.txtarea.insert (END, "\n")
Kitas:
self.txtarea.insert (END, „Naujienų nėra“)
išskyrus Išimtis kaip e:
messagebox.showerror('KLAIDA', „Atsiprašome, susidūrėme su kai kuriomis problemomis. Patikrinkite interneto ryšį ir bandykite dar kartą.")
Sukurkite klasės egzempliorių ir inicijuokite jį. The mainloop () funkcija liepia Python paleisti Tkinter įvykių kilpą ir klausytis įvykių, kol uždarysite langą.
šaknis = Tk()
obj = „NewsApp“ (šaknis)
root.mainloop()
Sudėkite visą kodą ir jūsų programa yra paruošta rodyti naujienas pagal skirtingas kategorijas.
Naujienų programos išvestis
Vykdant programą teksto srityje prašoma pasirinkti kategoriją. Spustelėjus bet kurį iš mygtukų, ji rodo naujienas su aprašymu, turiniu ir nuoroda (jei yra), atskirta dviem eilutėmis.
Naudingos API jūsų Python projektui
API yra labai patogu integruoti naujas programas su esamomis programinės įrangos sistemomis. Galite naudoti „OpenWeatherMap“ API, kad gautumėte bet kurios srities orų informaciją realiuoju laiku, ir „Google“ žemėlapių API, kad įtrauktumėte žemėlapius į savo svetainės programą. Galite automatizuoti „GitHub“ užduotis naudodami „GitHub“ API ir naudoti „Zoom“ API vaizdo konferencijoms integruoti.
Taip pat galite naudoti „ChatGPT“ galią iš savo programų, naudodami „OpenAI“ API, ir sukurti įdomių AI valdomų programų.