[파이썬] tkinter 로그인 및 사용자 인증 시스템 구현

이번 기술 블로그에서는 Python의 tkinter를 사용하여 로그인 및 사용자 인증 시스템을 구현하는 방법에 대해서 알아보겠습니다. 이러한 시스템을 개발하는 것은 보안적인 측면에서 중요한데, tkinter를 사용하면 간단하고 직관적인 인터페이스를 만들 수 있습니다.

tkinter를 사용하여 기본 윈도우 생성하기

먼저, tkinter를 사용하여 기본 윈도우를 생성하는 것으로 코드를 시작해 보겠습니다. tkinter 패키지를 import하고 Tk() 클래스로 윈도우 객체를 생성할 수 있습니다.

import tkinter as tk

window = tk.Tk()
window.title("로그인")
window.geometry("400x300")
window.mainloop()

이 코드를 실행하면 크기가 400x300 픽셀인 빈 윈도우가 생성됩니다.

로그인 폼 생성하기

다음으로, 로그인 폼을 생성해 보겠습니다. 윈도우에 라벨, 텍스트 상자 및 버튼을 추가하여 간단한 로그인 인터페이스를 만들 수 있습니다.

import tkinter as tk

def login():
    username = entry_username.get()
    password = entry_password.get()
    if username == "admin" and password == "password":
        label_result.config(text="로그인 성공", fg="green")
    else:
        label_result.config(text="로그인 실패", fg="red")
        

window = tk.Tk()
window.title("로그인")
window.geometry("400x300")

label_username = tk.Label(window, text="사용자 이름:")
label_username.pack()
entry_username = tk.Entry(window)
entry_username.pack()

label_password = tk.Label(window, text="비밀번호:")
label_password.pack()
entry_password = tk.Entry(window, show="*")
entry_password.pack()

button_login = tk.Button(window, text="로그인", command=login)
button_login.pack()

label_result = tk.Label(window, text="")
label_result.pack()

window.mainloop()

이 코드를 실행하면 사용자 이름과 비밀번호를 입력할 수 있는 로그인 폼이 생성되고, “로그인” 버튼을 누르면 입력된 사용자 이름과 비밀번호를 검사한 후 로그인 성공 또는 실패 메시지가 표시됩니다.

사용자 인증 시스템 구현하기

마지막으로, 사용자 인증 시스템을 구현해 보겠습니다. 이를 위해, 사용자 이름 및 비밀번호를 파일에 저장하고, 로그인 시 입력된 정보를 이 파일과 비교하는 기능을 추가하겠습니다.

import tkinter as tk

def login():
    username = entry_username.get()
    password = entry_password.get()
    
    # 사용자 정보를 파일에서 읽어오기
    with open("users.txt", "r") as file:
        users = file.read().splitlines()
        
    authenticated = False
    for user in users:
        saved_username, saved_password = user.split(",")
        if username == saved_username and password == saved_password:
            authenticated = True
            break
    
    if authenticated:
        label_result.config(text="로그인 성공", fg="green")
    else:
        label_result.config(text="로그인 실패", fg="red")
        

window = tk.Tk()
window.title("로그인")
window.geometry("400x300")

label_username = tk.Label(window, text="사용자 이름:")
label_username.pack()
entry_username = tk.Entry(window)
entry_username.pack()

label_password = tk.Label(window, text="비밀번호:")
label_password.pack()
entry_password = tk.Entry(window, show="*")
entry_password.pack()

button_login = tk.Button(window, text="로그인", command=login)
button_login.pack()

label_result = tk.Label(window, text="")
label_result.pack()

window.mainloop()

이 코드를 실행하기 전에, users.txt라는 파일을 생성하고 사용자 이름과 비밀번호를 저장합니다. 각 사용자 정보는 쉼표로 구분되어야 합니다.

위의 코드를 실행하면 입력된 사용자 이름과 비밀번호를 users.txt 파일의 정보와 비교하여 로그인 성공 또는 실패 메시지가 표시됩니다.

이제 당신은 Python의 tkinter를 사용하여 간단한 로그인 및 사용자 인증 시스템을 구현하는 방법을 배웠습니다. 이를 기반으로 보다 복잡한 로그인 시스템을 만들고 다양한 기능을 추가할 수 있습니다.