2025-05-28 14:23:58 +09:00

80 lines
2.6 KiB
Python

import tkinter as tk
import hashlib
import configparser
from tkinter import Label, Entry, Button, messagebox
config = configparser.ConfigParser()
config.read('config.ini')
adminid = config['User']['adminid']
adminpw = config['User']['adminpass']
def hashcryto(txt):
original_string = txt
# SHA-256 해시 객체 생성
hash_object = hashlib.sha256()
# 문자열을 바이트로 변환하여 해싱
original_bytes = original_string.encode('utf-8')
hash_object.update(original_bytes)
# 해시된 결과를 16진수로 표시
hashed_string = hash_object.hexdigest()
return hashed_string
# 로그인 버튼 클릭 시 실행할 함수
def login():
username = username_entry.get()
password = password_entry.get()
if hashcryto(username) == adminid and hashcryto(password) == adminpw:
messagebox.showinfo("로그인 성공", "로그인에 성공했습니다!")
# 로그인 성공 시, 새로운 창을 열고 메인 창을 숨깁니다.
main_window.withdraw() # 메인 창 숨김
welcome_window.geometry("500x300")
welcome_window.deiconify() # 로그인 성공 페이지 표시
else:
messagebox.showerror("로그인 실패", "잘못된 사용자 이름 또는 비밀번호입니다.")
# 로그아웃 버튼 클릭 시 실행할 함수
def logout():
welcome_window.withdraw() # 로그인 성공 페이지 숨김
main_window.deiconify() # 메인 창 표시
# 메인 윈도우 생성
main_window = tk.Tk()
main_window.title("로그인 폼")
# 사용자 이름 레이블과 엔트리 위젯
username_label = Label(main_window, text="사용자 이름:")
username_label.pack()
username_entry = Entry(main_window)
username_entry.pack()
# 비밀번호 레이블과 엔트리 위젯
password_label = Label(main_window, text="비밀번호:")
password_label.pack()
password_entry = Entry(main_window, show="*") # 비밀번호 필드를 표시하지 않음
password_entry.pack()
# 로그인 버튼
login_button = Button(main_window, text="로그인", command=login)
login_button.pack()
# 로그인 성공 페이지
welcome_window = tk.Toplevel(main_window)
welcome_window.title("환영합니다!")
welcome_label = Label(welcome_window, text="로그인에 성공했습니다!")
welcome_label.pack()
# 로그아웃 버튼
logout_button = Button(welcome_window, text="로그아웃", command=logout)
logout_button.pack()
# 처음에는 로그인 성공 페이지 숨김
welcome_window.withdraw()
# 메인 루프 시작
main_window.geometry("500x300")
main_window.resizable(False, False) # 창 크기 조절 불가능
main_window.mainloop()