본문 바로가기
코딩/파이썬 활용 프로젝트

파이썬 GUI_5_엔트리_버튼 클릭 시 입력 문자열 가져오기

by jkyoon 2022. 12. 7.

*본 코드는 PC(윈도)에서도 동작합니다.

[목표]엔트리를 이용하여 사용자의 입력 받기

 

로그인하기 위해 아이디나 비밀번호를 입력하는 일이 어느새 일상이 됐습니다.

이처럼 사용자가 프로그램을 사용 시, 키보드를 통해 무엇인가를 입력할 때가 있습니다.

엔트리를 활용하면 사용자로부터 입력을 받을 수 있습니다.

 

 

1. 엔트리 만들기

 

다음과 같이 기본 코드에 음영 표시한 코드 두 줄을 추가하면 엔트리가 표시됩니다.

엔트리는 흔히 보는 입력창 모양입니다.

네모칸에 입력을 기다리는 커서가 깜빡입니다. 테스트 삼아 아무 내용이나 입력해 보세요. 

from tkinter import *

root = Tk()
root.title("GUI프로그래밍")
root.geometry("320x200")


ent = Entry(root, width=30)
ent.pack()


root.mainloop()

Entry()메서드의 width속성은 가로 너비를 지정하는 속성입니다. 위 코드에서는 너비를 30픽셀로 정했습니다.

실행결과를 보면 엔트리와 커서만 덩그러니 있으니 썰렁해 보입니다.

사용자 입장에서는 무엇을 입력하라는 것인지 몰라 당황스러울 수도 있겠습니다.

그러니, 친절하게 사용자에게 보여줄 기본 문구를 지정해 보겠습니다.

 

2. 엔트리에 기본 문구 표시하기

아래처럼 음영 표시된 코드 한 줄을 추가하면 엔트리에 표시될 기본 문구 또는 문장을 표시할 수 있습니다.

from tkinter import *

root = Tk()
root.title("GUI프로그래밍")
root.geometry("320x200")


ent = Entry(rootwidth=30)
ent.pack()
ent.insert(0, "아이디를 입력하세요")



root.mainloop()

[설명]insert() 메서드에 대해서

insert(0, "아이디를 입력하세요")

에서 숫자 0은 문자열("아이디를 입력하세요")을 추가할 위치(인덱스)를 의미합니다. 

 

[추가 설명] 인덱스에 대해 자세한 설명은 더보기를 확인하세요.


더보기

인덱스란?

인덱스는 문자열에서 각 문자가 자리한 위치를 나타내는 숫자입니다.

문자열의 가장 왼쪽을 0으로 해서 1씩 커집니다.

예를 들어 "아이디를 입력하세요"라는 문자열에서 각 문자의 인덱스는 다음과 같습니다.

문자 '아'의 인덱스는 0 이고 '입'의 인덱스는 5입니다. 

주의할 점은 띄어쓰기도 하나의 문자로 인식되므로 인덱스 4를 차지하고 있습니다.

인덱스 0 1 2 3 4 5 6 7 8 9
문자열  

 

더보기

현재 엔트리에는 아무런 문자열도 없는 빈 상태이므로 저 0이 큰 의미는 없습니다.

인덱스를 이해하기 위해 아래와 같이 코드 한 줄을 추가해서 실행해 보세요.

from tkinter import *


root = Tk()
root.title("GUI프로그래밍")
root.geometry("320x200")


ent = Entry(root, width=30)
ent.pack()
ent.insert(0, "아이디를 입력하세요")
ent.insert(5, "비밀번호")

root.mainloop()

실행 결과를 보면 인덱스에 대해 감이 잡히나요?

ent.insert(5, "비밀번호")는

먼저 입력된 문자열 "아이디를 입력하세요"의 인덱스 5의 자리에 "비밀번호"를 끼워넣기(insert)합니다.

따라서 인덱스 5의 자리 이후에 있던 "입력하세요"는 오른쪽으로 밀려납니다.

 

3. 버튼 클릭 시 엔트리의 문자열 가져오기

버튼을 클릭하여 사용자가 입력한 문자열을 가져와 보겠습니다.

음영 표시한 네 줄의 코드가 필요합니다.

 

from tkinter import *

root = Tk()
root.title("GUI프로그래밍")
root.geometry("320x200")


ent = Entry(root, width=30)
ent.pack()
ent.insert(0, "아이디를 입력하세요")

def btncmd():
    print(ent.get())

btn = Button(root, text="클릭하세요", command=btncmd)
btn.pack()


root.mainloop()

1)먼저 버튼을 추가하세요. (음영 표시된 코드 3, 4행)

btn = Button(roottext="클릭하세요"command=btncmd)
btn.pack()

버튼 클릭 시 동작할 함수이름을 btncmd로 지정했습니다.

 

2)btncmd() 함수 정의하기 (음영 표시된 코드 1, 2행)

    print(ent.get()) 에 주목하세요.

get() 메서드는 이름 그대로 엔트리 객체(ent)에 입력된 문자열("아이디를 입력하세요")을 가져(get)옵니다.

그렇게 가져온 문자열을 print하라고 했으니 결과는 다음과 같습니다.

 

실행 결과 창

실행 결과 창에 "아이디를 입력하세요"가 출력됩니다.

 

[해보기]

기본 입력 문자열 외에 새롭게 입력한 문자열도 가져올 수 있습니다.

아래 순서대로 실습해 보세요.

1)  엔트리 창에 기본 문자열("아이디를 입력하세요")을 지우고 새로운 내용(예시:python GUI)을 입력해 보세요.

2) 버튼을 클릭하세요.

 

실행 결과 창에 새롭게 입력한 문자열(python GUI)이 출력됩니다.

댓글