[ Tkinter ] 버튼으로 비밀번호(Password) 보이기, 숨기기 기능 구현
어딘가에 로그인하려면 보통 아이디와 비밀번호를 입력을 합니다.
어떤 웹사이트 등을 보면 비밀번호 보이기라는 기능이 구현된 곳이 있습니다.
이 버튼을 누르면
내가 입력한 비밀번호가 별표(*) 표시가 아닌
입력한 문자 그대를 확인할 수 있게 해줍니다.
이 기능을 파이썬의 Tkinter로 구현해 보겠습니다.
화면 구성하기
먼저 화면을 구성하는데 아래 그림과 같이 해보겠습니다.
아래는 화면 구성 코드입니다.
import tkinter as tk
app = tk.Tk()
app.resizable(False, False)
pwd_label = tk.Label(app, text="PWD : ")
pwd_label.grid(row=0, column=0, padx=10)
pwd_entry = tk.Entry(app, show="*")
pwd_entry.grid(row=0, column=1)
pwd_entry.focus_set()
pwd_shwo_hide_btn = tk.Button(app, width=8, text="Show")
pwd_shwo_hide_btn.grid(row=0, column=2, padx=10, pady=5)
app.mainloop()
1. 창 만들기
tkinter 라이브러리를 불러와 창을 띄우는 코드입니다.
이렇게 하면 빈 창이 나타납니다.
import tkinter as tk
app = tk.Tk()
app.resizable(False, False)
app.mainloop()
아래 코드는 창의 크기를 사용자가 변경할 수 없게 만듭니다.
app.resizable(False, False)
2. 위젯 배치하기
창을 만들었으니, 이제 창에 위젯을 배치해야 합니다.
위젯은 tkinter 라이브러리에서 지원하는
버튼, 라벨, 엔트리 등을 지칭하는 말입니다.
pwd_label = tk.Label(app, text="PWD : ")
pwd_label.grid(row=0, column=0, padx=10)
pwd_entry = tk.Entry(app, show="*")
pwd_entry.grid(row=0, column=1)
pwd_entry.focus_set()
pwd_shwo_hide_btn = tk.Button(app, width=8, text="Show")
pwd_shwo_hide_btn.grid(row=0, column=2, padx=10, pady=5)
아래 코드를 통해 프로그램이 실행되면
entry에 커서가 바로 위치하게 만들어줍니다.
pwd_entry.focus_set()
이 코드에서는 아래 그림의
노란색 네모는 Label
빨간색 네모는 Entry
파란색 네모는 Button입니다.
3. 비밀번호를 표시하고 숨기는 함수 만들기
버튼의 text가 Show이면
entry의 속성을 바꿔 비밀번호가 표시되게 하고
버튼의 text는 Hide로 바꿉니다.
그 외의 경우 즉, 버튼의 text가 Show가 아니라면(여기서는 Hide라는 의미가 됩니다.)
entry의 속성을 바꾸어 비밀번호가 표시되지 않게 하고
버튼의 text는 Show로 바꾸어줍니다.
def show_hide():
if pwd_shwo_hide_btn['text']=='Show':
pwd_entry.config(show="")
pwd_shwo_hide_btn.config(text='Hide')
else:
pwd_entry.config(show="*")
pwd_shwo_hide_btn.config(text='Show')
여기서 Entry의 show 속성을 잠깐 말씀드리면
show='' 일 경우 입력된 문자를 그대로 표시하고
show="*" 일 경우 입력된 문자를 별표(*)로 표시합니다.
4. 버튼에 함수 연결하기
이제 버튼에 함수를 연결해 줍니다.
command= 를 사용합니다.
pwd_shwo_hide_btn = tk.Button(app, width=8, text="Show", command=show_hide)
전체코드
import tkinter as tk
app = tk.Tk()
app.resizable(False, False)
def show_hide():
if pwd_shwo_hide_btn['text']=='Show':
pwd_entry.config(show="")
pwd_shwo_hide_btn.config(text='Hide')
else:
pwd_entry.config(show="*")
pwd_shwo_hide_btn.config(text='Show')
pwd_label = tk.Label(app, text="PWD : ")
pwd_label.grid(row=0, column=0, padx=10)
pwd_entry = tk.Entry(app, show="*")
pwd_entry.grid(row=0, column=1)
pwd_entry.focus_set()
pwd_shwo_hide_btn = tk.Button(app, width=8, text="Show", command=show_hide)
pwd_shwo_hide_btn.grid(row=0, column=2, padx=10, pady=5)
app.mainloop()
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.