특정 키를 누를 때 동작할 수 있게 만드는 bind 함수에 대해서 알아보겠습니다. bind 함수는 위젯에 적용시킬 수 있습니다. 여기서 위젯이란 Label, Entry, Button 등을 모두 위젯이라고 하고 프로그램 화면에 보이는 대부분이 위젯이라고 볼 수 있습니다.
기본적으로 사용하는 방법을 알아보고 로그인 창에서 볼 수 있는 입력을 유도하는 음영을 표현해보겠습니다.
1. 기본 사용 방법
2. 로그인 창 입력 유도를 위한 음영 넣기
1. 기본 사용 방법
from tkinter import *
def mouse_left_click(event):
# 반드시 event 매개변수를 전달합니다.
global label1
label1['text'] = "누르면 이렇게 변함"
# 뭐가 들어오는지 확인해보자!
print(event)
gui = Tk()
gui.title("뭔가 눌렀을 때 동작하는 bind")
gui.geometry("400x300+300+300")
label1 = Label(gui, text="여기 클릭하면 변한다?", font=('굴림', 30))
label1.pack()
# bind 함수 기본 사용방법
# 위젯.bind(어떤 키?, 어떤 키를 누를 때 동작될 함수)
# 그러면 위쪽으로 올라가서 함수를 만들어 줍니다.
label1.bind("<Button-1>", mouse_left_click)
gui.mainloop()
실행 결과
label1.bind("<Button-1>", mouse_left_click)
-> <Button-1>은 마우스 왼쪽 버튼을 의미합니다.
-> 키보드의 키를 눌렀을 때로 하고 싶으면 <Key>를 문자열로 넣으면 됩니다.
-> 키보드의 특수키 예를 들면 backspace 같은 키들은 따로 있습니다.
-> 우선 사용하는 방법이 제일 중요합니다.
-> 원하는 옵션들은 파이썬 공식 문서를 참고하시면 좋을 거 같습니다.
def mouse_left_click(event):
-> bind를 사용하는 함수는 반드시 매개변수를 하나 전달해야합니다.
-> 보통은 event 라는 이름을 사용합니다.
-> 어떤 키를 클릭하냐에 따라서 event 변수의 내용이 달라집니다.
2. 로그인 창 입력 유도를 위한 음영 넣기
from tkinter import *
def id_click(event):
global input1
val = input1.get()
if val == "ID":
input1.delete(0, 2)
input1['fg'] = 'black'
elif val == "":
input1['fg'] = 'gray'
input1.insert(0, "ID")
def pw_click(event):
global input2
val = input2.get()
if input2.get() == "PW":
input2.delete(0, 2)
input2['fg'] = 'black'
elif val == "":
input2['fg'] = 'gray'
input2.insert(0, "PW")
gui = Tk()
gui.title("뭔가 눌렀을 때 동작하는 bind")
gui.geometry("400x300+300+300")
input1 = Entry(gui, width=15, font=('consolas', 20), fg='gray')
input2 = Entry(gui, width=15, font=('consolas', 20), fg='gray')
input1.pack(pady=5)
input2.pack(pady=5)
input1.insert(0, "ID")
input2.insert(0, "PW")
input1.bind("<Button-1>", id_click)
input2.bind("<Button-1>", pw_click)
gui.mainloop()
간단하게 이렇게 사용해 볼 수 있을 것 같습니다. 조금 더 완벽하게 하려면 Frame에 Entry를 넣고하면 조금 더 자연스럽지 않을 까 생각합니다.
bind 함수는 다양한 방법으로 응용될 수 있을 것입니다. 사용하고자 하는 기능을 잘 추가해보시길 바랍니다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
육십갑자를 파이썬으로 알아보자!(올해는 계묘년 : 검은 토끼의 해) (2) | 2023.01.05 |
---|---|
[파이썬 GUI] tkinter 7 화면 전환~~ (Frame을 이용한 화면 전환) (0) | 2022.11.24 |
[파이썬 GUI] tkinter 5(입력 위젯 만들기) (2) | 2022.10.26 |
[파이썬 GUI] tkinter 4(버튼 사용하기/버튼의 기능 만들기) (3) | 2022.10.21 |
[파이썬 GUI] tkinter 3(위젯을 화면에 배치하는 방법, pack, grid, place) (0) | 2022.10.14 |
댓글