Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีรับ API response ใหม่ใน Tkinter textbox

API มีประโยชน์มากในการนำบริการหรือคุณสมบัติไปใช้ในแอปพลิเคชัน API ช่วยสร้างการเชื่อมต่อระหว่างเซิร์ฟเวอร์และไคลเอนต์ ดังนั้น เมื่อไคลเอนต์ส่งคำขอโดยใช้หนึ่งในเมธอด API ไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะตอบกลับด้วยรหัสสถานะ (201 เป็นการตอบสนองที่สำเร็จ) ให้ไคลเอนต์

คุณสามารถสร้างคำขอไปยัง API ใดๆ ที่คุณต้องการโดยใช้หนึ่งในเมธอด (GET, POST, PUT หรือ DELETE) อย่างไรก็ตาม หากคุณต้องการสร้างแอปพลิเคชันที่ต้องการคำขอไปยังเซิร์ฟเวอร์โดยใช้ API สาธารณะที่มีอยู่ (เช่น Cat Facts API) คุณสามารถใช้โมดูล requests ในไลบรารี Python

ในแอปพลิเคชันต่อไปนี้ เราจะสร้าง textbox ซึ่งจะแสดงการตอบสนอง (text) ที่ดึงมาจากเซิร์ฟเวอร์โดยใช้หนึ่งใน Cat Facts API คุณยังต้องแน่ใจว่าคุณได้ติดตั้งโมดูล requests ในสภาพแวดล้อมของคุณแล้ว ในการติดตั้งโมดูล requests คุณสามารถใช้คำสั่งต่อไปนี้

pip install requests

เมื่อติดตั้งโมดูล requests สำเร็จแล้ว คุณสามารถทำตามขั้นตอนด้านล่างเพื่อสร้างแอปพลิเคชัน –

  • นำเข้าไลบรารีที่จำเป็นทั้งหมด

  • สร้าง text widget ในแอปพลิเคชันเพื่อแสดงการตอบสนองทั้งหมดที่ดึงมาจากเซิร์ฟเวอร์ (GET requests)

  • สร้าง var เพื่อเก็บ API URL

  • กำหนดฟังก์ชันเรียก API และดึง JSON response โดยแยกแอตทริบิวต์ "fact" จาก response body

  • อัปเดต text widget ด้วยการตอบสนองโดยลบ fact ที่มีอยู่และแทรก fact ใหม่

  • สร้างปุ่ม (next และ exit) เพื่อโหลด Cat facts แบบสุ่มอย่างต่อเนื่อง

ตัวอย่าง

# นำเข้าไลบรารีที่จำเป็น
from tkinter import *
import requests
import json

# สร้างอินสแตนซ์เฟรม Tkinter
win = Tk()
win.geometry("700x350")
win.title("Cat Fact API ")

# สร้างกล่องข้อความเพื่อแสดง response body
text = Text(win, height=10, width=50, wrap="word")
text.config(font="Arial, 12")

# สร้าง label widget
label = Label(win, text="Cat Facts")
label.config(font="Calibri, 14")

# เพิ่ม API URL
api_url = "https://catfact.ninja/fact"

# กำหนดฟังก์ชันดึง response และ text attribute จาก JSON response
def get_zen():
    response = requests.get(api_url).text
    response_info = json.loads(response)
    Fact = response_info["fact"]
    text.delete('1.0', END)
    text.insert(END, Fact)

# สร้าง Next และ Exit Button
b1 = Button(win, text="Next", command=get_zen)
b2 = Button(win, text="Exit", command=win.destroy)

label.pack()
text.pack()
b1.pack()
b2.pack()

get_zen()
win.mainloop()

ผลลัพธ์

คลิกปุ่ม "Next" เพื่อดึง Cat facts ถัดไปแบบสุ่ม คุณยังสามารถคลิกปุ่ม "Exit" เพื่อออกจากหน้าต่างแอปพลิเคชัน Tkinter

วิธีรับ API response ใหม่ใน Tkinter textbox