Tkinter의 Entry 위젯은 사용자로부터 한 줄짜리 텍스트를 입력받을 때 사용됩니다. 함께 알아두면 좋은 관련 위젯들은 다음과 같습니다.
- Text 위젯 – 사용자가 편집할 수 있는 여러 줄의 텍스트를 표시합니다.
- Label 위젯 – 사용자가 수정할 수 없는 한 줄 이상의 텍스트를 표시합니다.
구현 개요
먼저 tkinter와 csv 모듈을 임포트한 뒤 메인 윈도우를 생성합니다. 윈도우 제목은 "Data Entry"로 지정하고(원하는 이름으로 변경 가능), 필요한 기능에 따라 세 가지 함수를 만듭니다. 여기서는 버튼이 실제로 동작하도록 Add(추가), Save(저장), Clear(지우기) 함수를 구현합니다.
윈도우에 데이터를 입력한 후 Add 버튼을 클릭하면, Add 함수는 "데이터가 성공적으로 추가되었습니다"라는 메시지 박스를 표시합니다. 마찬가지로 Save 버튼을 클릭하면 Save 함수가 "저장이 완료되었습니다"라는 메시지 박스를 보여주며, Clear 함수는 입력 필드의 모든 내용을 삭제합니다.
예제 코드
# 필요한 라이브러리 임포트
from csv import *
from tkinter import *
from tkinter import messagebox
window = Tk()
window.title("Data Entry")
window.geometry("700x350")
main_lst = []
def Add():
lst = [name.get(), age.get(), contact.get()]
main_lst.append(lst)
messagebox.showinfo("Information", "The data has been added successfully")
def Save():
with open("data_entry.csv", "w") as file:
Writer = writer(file)
Writer.writerow(["Name", "Age", "Contact"])
Writer.writerows(main_lst)
messagebox.showinfo("Information", "Saved succesfully")
def Clear():
name.delete(0, END)
age.delete(0, END)
contact.delete(0, END)
# 라벨 3개, 버튼 4개, 입력 필드 3개
label1 = Label(window, text="Name: ", padx=20, pady=10)
label2 = Label(window, text="Age: ", padx=20, pady=10)
label3 = Label(window, text="Contact: ", padx=20, pady=10)
name = Entry(window, width=30, borderwidth=3)
age = Entry(window, width=30, borderwidth=3)
contact = Entry(window, width=30, borderwidth=3)
save = Button(window, text="Save", padx=20, pady=10, command=Save)
add = Button(window, text="Add", padx=20, pady=10, command=Add)
clear = Button(window, text="Clear", padx=18, pady=10, command=Clear)
Exit = Button(window, text="Exit", padx=20, pady=10, command=window.quit)
label1.grid(row=0, column=0)
label2.grid(row=1, column=0)
label3.grid(row=2, column=0)
name.grid(row=0, column=1)
age.grid(row=1, column=1)
contact.grid(row=2, column=1)
save.grid(row=4, column=0, columnspan=2)
add.grid(row=3, column=0, columnspan=2)
clear.grid(row=5, column=0, columnspan=2)
Exit.grid(row=6, column=0, columnspan=2)
window.mainloop()
print(lst)
print(main_lst)실행 결과
위 코드를 실행하면 다음과 같은 출력 창이 나타납니다.

입력 필드에 데이터를 작성한 후 "Add"와 "Save" 버튼을 차례로 클릭하면 데이터가 "data_entry.csv" 파일에 저장됩니다.

저장된 CSV 파일을 열어보면 다음과 같은 형태로 데이터가 기록되어 있는 것을 확인할 수 있습니다.
Name, Age, Contact Arjun, 25, 8790654321 John, 20, 9876543210
코드 설명
- Add(): 각 Entry 위젯에서
get()메서드로 값을 읽어와 리스트에 담고, 이를main_lst에 추가합니다. - Save():
csv.writer객체를 생성해 헤더 행(Name, Age, Contact)과 저장된 모든 데이터를 CSV 파일에 한 번에 기록합니다. - Clear():
delete(0, END)메서드로 세 개의 입력 필드 내용을 모두 비웁니다.
이처럼 Tkinter의 Entry 위젯과 csv 모듈을 조합하면 간단한 GUI 데이터 입력 프로그램을 손쉽게 만들 수 있으며, 입력된 데이터를 체계적으로 파일로 관리할 수 있습니다.