Nem kell több időt vesztegetni a tökéletes recept keresésével. Használja ezt az útmutatót személyre szabott receptkereső alkalmazás létrehozásához.

Az interneten szétszórt receptek sokaságával, linkekkel és hirdetésekkel, a tökéletes recept megtalálása kihívást jelenthet. A receptkereső alkalmazás elkészítése személyre szabott és felhasználóbarát élményt és következetes tervezést biztosít, kiküszöbölve minden irreleváns eredményt és zavaró tényezőt.

.Az alkalmazás elkészítésével fejlesztheti tudását a HTTP-kérésekben, az API-kulcsok kezelésében, a képkezelésben és a grafikus felhasználói felületek felépítésében, beleértve a dinamikus grafikus felhasználói felület frissítését.

Telepítse a Tkinter, Requests, Pillow és Webbrowser modult

Receptkereső alkalmazás létrehozásához Tkinter, Requests, PIL és Webbrowser modul szükséges. A Tkinter lehetővé teszi az asztali alkalmazások létrehozását. Számos widgetet kínál, amelyek megkönnyítik a grafikus felhasználói felületek fejlesztését. A Tkinter telepítéséhez nyissa meg a terminált, és futtassa:

instagram viewer
pip install tkinter

A Requests modul egyszerűvé teszi a HTTP-kérések létrehozását és egy olyan válaszobjektum visszaadását, amely olyan adatokat tartalmaz, mint a kódolás és az állapot. Használhatja hívóazonosító adatok lekérésére, hozzon létre egy webhely állapotellenőrzőt, valutaváltó, ill egy híralkalmazás. A Requests modul telepítéséhez nyissa meg a terminált, és futtassa:

pip install requests

A Pillow könyvtár – a Python Imaging Library (PIL) egyik formája – olyan képfeldolgozási lehetőségeket biztosít, amelyek segítik a szerkesztést, a fájlformátumok konvertálásaés képek mentése. A Pillow modul telepítéséhez nyissa meg a terminált, és futtassa:

pip install Pillow

A Webböngésző modul segít bármely hivatkozás megnyitásában az alapértelmezett böngészőben. Ez a Python szabványkönyvtár része. Ezért nem kell kívülről telepítenie.

Edamam API-kulcs létrehozása a receptkereséshez

Az Edamam Recipe Search API kulcs létrehozásához kövesse az alábbi lépéseket:

  1. Látogatás Edamam és kattintson a Regisztrációs API gomb. Töltse ki a részleteket, és válassza ki a tervet Receptkereső API – Fejlesztő.
  2. Jelentkezzen be fiókjába, kattintson a gombra a Számlák gombra, majd kattintson a gombra Lépjen az Irányítópultra gomb.
  3. Ezt követően kattintson a Alkalmazások fület, és végül kattintson a Kilátás gombra a Receptkereső API mellett.
  4. Másolja a Alkalmazásazonosító és a Alkalmazáskulcsok és tárolja az alkalmazásban való használatra.

A funkcionalitás kialakítása az 5 legjobb recept eléréséhez

Ebben megtalálja a teljes forráskódot a Python segítségével elkészíthető receptkereső alkalmazáshoz GitHub adattár.

Importálja a szükséges modulokat. Határozzon meg egy módszert get_top_5_recipes() amely lekéri a felhasználó által keresett étel öt legnépszerűbb receptjének címét, képét és linkjét. Használat kap() a felhasználó által keresett étel nevének kivonásához.

Ha a felhasználó beírt egy receptnevet, adja meg az Edamam API receptkeresési végpontjának alap URL-címét. Adja át a app_id és app_key korábban másolta az API-kérelmek hitelesítéséhez és engedélyezéséhez.

import tkinter as tk
import requests
from PIL import Image, ImageTk
import webbrowser

defget_top_5_recipes():
recipe_name = entry_recipe_name.get()
if recipe_name:
api_url = "https://api.edamam.com/search"
app_id = # Put your app id for edamam api
app_key = # Put your app key for edamam api

Hozzon létre egy szótárt, params amely tartalmazza az API-kérés részeként átadandó különböző paramétereket. Állítsa be a kulcs-érték párokat q, app_id, és app_key a korábban szerzett értékekhez. Állítsa be a tól től és nak nek paramétereket, hogy tükrözze a látni kívánt eredmények számát.

Küldjön GET kérelmet az Edamam API-nak, kombinálva az API URL-t és a params szótár. Tárolja a választ, és JSON formátumban bontsa ki. Hívás clear_recept_list() hogy törölje a képernyőn megjelenő recepteket a korábbi kérésekből.

 params = {
"q": recipe_name,
"app_id": app_id,
"app_key": app_key,
"from": 0,
"to": 5,
}

response = requests.get(api_url, params=params)
data = response.json()
clear_recipe_list()

Ellenőrizze, hogy a kulcs, találatokat jelen van a kivont JSON-adatokban, és ha tartalmazza a keresési eredményt. Ha igen, ismételje meg a keresési eredményeket, és egyenként vegye ki a receptinformációkat. Küldjön GET kérést a kép URL-címére a következővel: folyam paraméter beállítva Igaz hogy lehetővé tegye a képadatok streamelését.

Használja a Párna modult Kép osztályt a kapott kép megnyitásához. Módosítsa át úgy, hogy a magassága és szélessége 200 pixel legyen a segítségével Lanczos újramintavételezési módszer a kiváló minőségű átméretezéshez. Alakítsa át Tkinter-kompatibilissé PhotoImage hogy megjelenítse a grafikus felhasználói felületen.

if"hits"in data and data["hits"]:
for i, hit in enumerate(data["hits"]):
recipe = hit["recipe"]
recipe_list.append(recipe)
recipe_name = recipe["label"]
recipe_link = recipe["url"]
image_url = recipe["image"]

image_response = requests.get(image_url, stream=True)
image = Image.open(image_response.raw)
image = image.resize((200, 200), Image.LANCZOS)
photo_image = ImageTk.PhotoImage(image)

Az alkalmazás szerkezetének felépítése

Határozzon meg három címkét a recept címének, a képnek és a receptre mutató hivatkozásnak a megjelenítéséhez. Állítsa be a szülőablakot, amelybe el szeretné helyezni, a megjeleníteni kívánt szöveget és a betűtípus stílusát. A kép megjelenítéséhez állítsa be a kép tulajdonít neki fotó_kép. Állítsa be a kurzor opciót a link címkéjében kéz2 hogy kattintható legyen.

Kösse össze a hivatkozást és a bal egérgombbal kattintson az esemény meghívásához Link megnyitása() funkció. Rendszerezze az összes widgetet a csomag módszerrel, középre állítsa őket vízszintesen, és szükség szerint adjon hozzá párnázást. Adja hozzá a címet, a képeket és a hivatkozásokat három különböző listához.

 recipe_title_label = tk.Label(
canvas_frame,
text=f"{i+1}. {recipe_name}",
font=("Helvetica", 12, "bold"),
)
recipe_title_label.pack(pady=(5, 0), anchor=tk.CENTER)

image_response = requests.get(image_url, stream=True)
image = Image.open(image_response.raw)
image = image.resize((200, 200), Image.LANCZOS)
photo_image = ImageTk.PhotoImage(image)
image_label = tk.Label(canvas_frame, image=photo_image)
image_label.image = photo_image
image_label.pack(pady=(0, 5), anchor=tk.CENTER)

link_label = tk.Label(
canvas_frame, text=recipe_link, fg="blue", cursor="hand2"
)
link_label.pack(pady=(0, 10), anchor=tk.CENTER)
link_label.bind(
"", lambda event, link=recipe_link: open_link(link)
)

recipe_labels.append(recipe_title_label)
recipe_images.append(photo_image)
recipe_links.append(link_label)

Határozzon meg egy módszert, clear_recept_list() az előző kérés által generált teljes képernyőtartalom törléséhez. Törölje a receptlista tartalmát, és ismételje meg az egyes címkéket recept_címke lista.

Hívja a pack_forget() módszerrel eltávolíthatja a címkét a kijelzőről, de a widget objektumot érintetlenül hagyhatja.

Törölje a recept_címkék lista az új adatokhoz. Ismételje meg ezt a folyamatot a képeknél és a hivatkozásoknál is. Határozzon meg egy módszert, Link megnyitása() a recept hivatkozásának megnyitásához az alapértelmezett webböngészőben.

defclear_recipe_list():
recipe_list.clear()
for label in recipe_labels:
label.pack_forget()
recipe_labels.clear()
for image_label in recipe_images:
image_label.pack_forget()
recipe_images.clear()
for link_label in recipe_links:
link_label.pack_forget()
recipe_links.clear()

defopen_link(link):
webbrowser.open(link)

Inicializálja a Tkinter gyökérablakát. Állítsa be az alkalmazás címét, méreteit és háttérszínét. Határozzon meg egy keret widgetet, és állítsa be a szülőelemét a háttérszínével együtt. Hozzon létre egy címkét, egy bejegyzést és egy keresőgombot. Rendszerezze az összes widgetet a segítségével csomag módszert, és szükség szerint adjon hozzá párnázást.

root = tk.Tk()
root.title("Recipe Finder")
root.geometry("600x600")
root.configure(bg="#F1F1F1")

frame = tk.Frame(root, bg="#F1F1F1")
frame.pack(fill=tk.BOTH, expand=tk.YES, padx=20, pady=20)

label_recipe_name = tk.Label(
frame, text="Enter Recipe Name:", font=("Helvetica", 14, "bold"), bg="#F1F1F1"
)
label_recipe_name.pack()

entry_recipe_name = tk.Entry(frame, font=("Helvetica", 12))
entry_recipe_name.pack(pady=5)

search_button = tk.Button(
frame,
text="Search Recipes",
font=("Helvetica", 12, "bold"),
command=get_top_5_recipes,
)
search_button.pack(pady=10)

Hozzon létre egy fehér hátterű vásznat a receptinformációkat tartalmazó widgetek megjelenítéséhez. Rendezze az ablak bal oldalára úgy, hogy a keretben lévő teljes helyet mindkét irányban elfoglalja, és átméretezéskor bővítse.

Hozzon létre egy függőleges görgetősávot a vászonhoz, és helyezze a jobb oldalára. Link a scrollbar.set módszer a vászon.yview módszert, így a görgetősáv görgetése görgetni fogja a vászon tartalmát.

Hozzon létre egy keretet a vásznon belül, amely tárolóként szolgál a receptelemek számára, rögzítve az ablak bal felső sarkában. Kösd meg a olyan eseményt, amely biztosítja a doboz helyes görgetését, amikor a tartalma megváltozik vagy átméretezi.

canvas = tk.Canvas(frame, bg="white")
canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=tk.YES)

scrollbar = tk.Scrollbar(frame, orient=tk.VERTICAL, command=canvas.yview)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
canvas.configure(yscrollcommand=scrollbar.set)

canvas_frame = tk.Frame(canvas, bg="white")
canvas.create_window((0, 0), window=canvas_frame, anchor=tk.NW)
canvas_frame.bind(
"", lambda event: canvas.configure(scrollregion=canvas.bbox("all"))
)

Adja meg a receptek, címkék, képek és hivatkozások listáját. A mainloop() függvény azt mondja a Pythonnak, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket, amíg be nem zárja az ablakot.

recipe_list = []
recipe_labels = []
recipe_images = []
recipe_links = []

root.mainloop()

Állítsa össze az egészet, és fedezze fel a konyhákat egyetlen gombnyomással.

A Receptkereső alkalmazás kimenete

A program futtatásakor és Chicken Burger néven belépve az ételbe, az első öt eredményt kapja. Tartalmazza a beírt étel címét, képét és receptlinkjét. A hivatkozásra kattintva az alapértelmezett webböngésző megnyitja a recept linkjét. Lefelé görgetéskor a tartalom mérete változatlan marad, és a különböző eredményeket vízszintesen középre állítva jeleníti meg.

A Receptkereső alkalmazás fejlesztése

A receptkereső alkalmazás fejlesztése érdekében szűrést és rendezést hajthat végre a különböző preferenciák szerint. Az ételeket az étrendi preferenciák, a főzési idő és a konyha szerint szűrheti, és tetszőleges sorrendbe rendezheti.

Hozzon létre egy funkciót, amellyel kedvenc receptjeit könyvjelzővel láthatja el, hogy később megtekinthesse, és megoszthatja azokat a közösségi médiában. Létrehozhat egy kategóriát, hogy felfedezze a legtöbbet keresett ételeket, a legtöbb könyvjelzővel ellátott stb.

Programozási ismereteit és az API-k hatékony funkcióit ötvözve tovább alakíthatja ezt az alapalkalmazást teljes értékű alkalmazássá.