인터넷에는 10억 개가 넘는 웹사이트가 있습니다. 사용자의 계정을 안전하게 보호하기 위해 온라인 뱅킹부터 소셜 미디어에 이르기까지 많은 웹 애플리케이션에는 로그인 페이지가 필요합니다.
Tkinter 모듈을 사용하여 간단한 로그인 페이지를 만드는 방법을 알아보고 Python으로 GUI 앱을 구축하는 기본 개념을 익혀보세요.
Tkinter 모듈
Tkinter를 사용하여 사용자 이름과 비밀번호를 수락하고 유효성을 검사하는 로그인 페이지를 구축할 수 있습니다. Tkinter는 앱을 쉽게 개발할 수 있도록 버튼, 레이블, 텍스트 상자 등 다양한 위젯을 제공합니다. Tkinter를 사용하여 개발할 수 있는 애플리케이션으로는 할 일 애플리케이션, 음악 플레이어, 포모도로 타이머 앱, 단어 맞추기 게임 등이 있습니다.
Tkinter를 설치하려면 터미널을 열고 실행하세요:
pip install tkinter
파이썬을 사용하여 로그인 페이지를 만드는 방법
파이썬을 사용하여 로그인 페이지를 만드는 소스 코드는 이 GitHub 리포지토리에서 찾을 수 있습니다.
필요한 라이브러리를 가져오고 루트 창을 초기화합니다. 제목과 창 크기를 설정합니다. configure() 함수를 사용하여 배경색을 설정합니다.
import tkinter
from tkinter import messagebox
window = tkinter.Tk()
window.title("Login Page using Python")
window.geometry('750x550')
window.configure(bg='#8F00FF')
사용자의 자격 증명을 기반으로 주요 결정을 내릴 로그인() 함수를 정의합니다. 이 간단한 데모에서는 유효한 자격 증명을 하드코딩하지만, 실제 앱에서는 데이터베이스에서 자격 증명을 가져올 것입니다.
자격 증명을 저장하고 각 엔트리 위젯의 get() 메서드를 사용하여 사용자가 입력한 데이터를 검색합니다. 데이터 유효성 검사에 따라 적절한 제목과 메시지가 포함된 메시지 상자를 표시합니다.
def login():
username = "makeuseof"
password = "muo"
if username_entry.get()==username and password_entry.get()==password:
messagebox.showinfo(title="Login Successful!", message="You successfully logged in.")
else:
messagebox.showerror(title="Error", message="Invalid login.")
부모 역할을 할 Tkinter 프레임을 정의하고 배경색을 지정합니다.
frame = tkinter.Frame(bg='#8F00FF')
로그인, 사용자 이름 및 비밀번호에 대한 세 개의 레이블을 정의합니다. 레이블을 배치할 상위 창, 표시할 텍스트, 배경색, 글꼴 색상 및 글꼴 스타일을 전달합니다.
login_label = tkinter.Label(frame, text="Login Page Using Python", bg='#000000', fg="#DC143C", font=("Arial", 30))
username_label = tkinter.Label(frame, text="Username", bg='#8F00FF', fg="#FFFFFF", font=("Arial", 16, 'bold'))
password_label = tkinter.Label(frame, text="Password", bg='#8F00FF', fg="#FFFFFF", font=("Arial", 16, 'bold'))
사용자로부터 데이터를 가져올 두 개의 항목 위젯을 정의합니다. 글꼴 스타일과 함께 위젯을 배치할 상위 창을 설정합니다. 사용자가 화면에 입력하는 비밀번호를 숨기려면 별표로 표시 속성을 사용합니다.
username_entry = tkinter.Entry(frame, font=("Arial", 16))
password_entry = tkinter.Entry(frame, show="*", font=("Arial", 16))
이전에 정의한 프레임, 표시할 텍스트, 배경색, 글꼴 색상, 글꼴 스타일, 클릭 시 실행할 명령으로 상위 창을 허용하는 로그인 단추를 정의합니다.
login_button = tkinter.Button(frame, text="Login", bg="#DC143C", fg="#FFFFFF", font=("Arial", 16), command=login)
그리드 관리자를 사용하여 세 개의 레이블, 두 개의 항목 및 로그인 버튼을 표 형식으로 정리하여 배치합니다. 로그인 레이블은 머리글 역할을 하며 두 열을 모두 차지합니다. 고정 옵션은 위젯이 셀의 어느 가장자리에 고정될지 지정합니다. 뉴스(동서남북)로 전달하면 프로그램은 가로 및 세로 방향 모두에서 텍스트의 중앙에 배치합니다.
왼쪽에 레이블을 하나씩 아래에 배치하고 오른쪽의 항목 위젯에 대해서도 동일한 방법을 따릅니다. 헤더와 마찬가지로 로그인 버튼을 양쪽 열을 모두 차지하도록 배치합니다. 모든 위젯에 Y 방향으로 적절한 패딩을 제공합니다.
login_label.grid(row=0, column=0, columnspan=2, sticky="news", pady=40)
username_label.grid(row=1, column=0)
username_entry.grid(row=1, column=1, pady=20)
password_label.grid(row=2, column=0)
password_entry.grid(row=2, column=1, pady=20)
login_button.grid(row=3, column=0, columnspan=2, pady=30)
pack()을 사용하여 모든 위젯을 블록으로 구성하고 Tkinter 이벤트 루프를 실행하여 창을 닫을 때까지 이벤트를 수신 대기합니다.
frame.pack()
window.mainloop()
모든 코드를 조합하면 로그인 페이지를 사용할 준비가 되었습니다.
로그인 페이지 앱의 샘플 출력
프로그램을 실행하고 유효한 자격 증명을 입력하면 프로그램이 사용자가 성공적으로 로그인할 수 있다는 메시지 상자를 표시합니다.
다른 자격 증명을 사용하여 프로그램을 실행하면 로그인이 유효하지 않다는 오류 메시지 상자가 표시됩니다.
Python 로그인 페이지 개선하기
MySql과 같은 데이터베이스를 사용하여 레코드를 가져와 사용자 자격 증명과 비교하여 유효성을 검사할 수 있습니다. mysql.connector 라이브러리는 Python Tkinter 애플리케이션과 MySql 데이터베이스 간의 연결을 설정하는 데 도움이 됩니다.
향상된 UI를 보려면 customtkinter 모듈을 살펴볼 수 있습니다. 이 모듈은 순수하게 Tkinter 모듈을 기반으로 구축되었으며 표준 Tkinter 라이브러리의 일부로 제공되지 않는 최신 완전 사용자 지정 가능한 위젯을 만드는 데 도움이 됩니다. 이 두 라이브러리를 결합하면 GUI 프로그래밍 기술을 향상시키고 보다 정교한 애플리케이션을 만드는 데 디딤돌이 될 것입니다.