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()