Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 텍스트 상자에서 새로운 API 응답을 가져오는 방법

API는 애플리케이션에서 서비스나 기능을 구현할 때 매우 유용한 도구입니다. API는 서버와 클라이언트 간의 연결을 담당하며, 클라이언트가 API 메서드 중 하나를 사용해 서버에 요청을 보내면 서버는 상태 코드(성공 시 201)를 응답으로 반환합니다.

GET, POST, PUT, DELETE 등 다양한 메서드를 통해 원하는 API에 요청을 보낼 수 있습니다. 공개된 API(예: Cat Facts API)를 활용하는 애플리케이션을 만들고 싶다면, Python의 requests 모듈을 사용하면 됩니다.

이번 예제에서는 Cat Facts API로부터 서버에서 받아온 응답 텍스트를 화면에 출력하는 텍스트 상자를 만들어 보겠습니다. 시작하기 전에 환경에 requests 모듈이 설치되어 있는지 확인하세요. 아래 명령어로 설치할 수 있습니다.

pip install requests

구현 단계

requests 모듈 설치가 완료되었다면, 아래 단계를 따라 애플리케이션을 작성해 보세요.

  • 필요한 라이브러리를 모두 임포트합니다.
  • 서버(GET 요청)에서 받아온 모든 응답을 표시할 텍스트 위젯을 생성합니다.
  • API URL을 저장할 변수(var)를 만듭니다.
  • API를 호출하고, 응답 본문에서 "fact" 속성을 추출해 JSON 응답을 가져오는 함수를 정의합니다.
  • 기존 내용을 삭제하고 새 사실(fact)을 삽입하는 방식으로 text 위젯을 업데이트합니다.
  • 랜덤 고양이 사실을 끊김 없이 계속 불러올 수 있도록 '다음(Next)'과 '종료(Exit)' 버튼을 생성합니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *
import requests
import json

# tkinter 프레임 인스턴스 생성
win = Tk()
win.geometry("700x350")
win.title("Cat Fact API ")

# 응답 본문을 표시할 텍스트 상자 생성
text = Text(win, height=10, width=50, wrap="word")
text.config(font="Arial, 12")

# 라벨 위젯 생성
label = Label(win, text="Cat Facts")
label.config(font="Calibri, 14")

# API URL 설정
api_url = "https://catfact.ninja/fact"

# 응답을 받아와 JSON에서 fact 속성을 추출하는 함수 정의
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 버튼 생성
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" 버튼을 클릭하면 새로운 랜덤 고양이 사실을 즉시 불러올 수 있으며, "Exit" 버튼을 누르면 Tkinter 애플리케이션 창이 종료됩니다.

Tkinter 텍스트 상자에서 새로운 API 응답을 가져오는 방법