프로그램

[파이썬] 문제 : 음식 선택하면 음식 사진과 칼로리 정보 표시(tkinter)

오디세이99 2023. 4. 22. 08:20
728x90
반응형

from tkinter import *

# 음식명에 따른 이미지 파일명과 칼로리 정보
data = {'갈비':['food01.png',200], '감자':['food02.png',110]}

root = Tk()
root.geometry("280x420")
root.title("칼로리 정보")
root.resizable(True, True)

def ok_click():                          # ok 버튼 클릭시 함수
    # print(ent1.get())
    in_str = ent1.get()                  # 입력 문자열 가죠옴
    if in_str in data.keys():            # 입력 문자열이 data 딕셔너리의 키 중에 있으면 동작
        img_file = data[ent1.get()][0]   # data 딕셔너리에서 키로 찾은 정보는 리스트. 리스트의 0번은 이미지파일명
        img_text = data[ent1.get()][1]   # 리스트의 1번은 칼로리 정보
        # print(img_file, img_text)

        canvas.delete('all')             # 화면 clear
        img = PhotoImage(file=img_file)  # 이미지 불러옴
        canvas.create_image(150, 150, image=img)    # canvas에 이미지 로드

        canvas.create_text(20, 50, text=img_text, fill="red", font=('Helvetica 15 bold'))   # 컬로리 정보 canvas에 씀
        canvas.pack()
        root.mainloop()

lbl1 = Label(root, text="갈비")
lbl1.pack()

ent1 = Entry(root, width=35)
ent1.pack()

canvas = Canvas(root, width=300, height=300, background='gray')
canvas.pack(anchor='e')

btnO = Button(root, text='Ok', width=15, command=ok_click)    # 버큰 클릭시 함수 사용하도록  수정
btnO.pack(side='left', padx=10)

btnC = Button(root, text='Cancel', width=15)
btnC.pack(side='right', padx=10)

root.mainloop()

728x90
반응형