텍스트 입력

엔트리 위젯

엔트리(Entry) 위젯도 tkinter의 기본 위젯 중의 하나입니다. 응용 프로그램에서 사용자로부터 입력을 받을 때 사용합니다.

즉 사용자가 입력한 텍스트 문자열을 가져 오는 데 사용됩니다. 이 위젯을 이용하면 사용자가 한 줄의 텍스트를 입력할 수 있습니다.

사용자가 위젯의 가능한 디스플레이 공간보다 더 긴 문자열을 입력하면, 문자열이 스크롤 됩니다. 이때 화살표 키를 이용하여 문자열의 보이지 않는 부분으로 이동할 수 있습니다.

여러 줄의 텍스트를 입력할 경우 텍스트 위젯을 사용하는 것이 좋습니다. Entry 위젯은 단일 글꼴로 제한됩니다.

 

엔트리 위젯의 구문은 다음과 같습니다.

w = Entry(parent, option, ...)

 

"parent"는 위젯이 배치되는 부모 창을 나타냅니다. 다른 위젯과 마찬가지로 추가 옵션을 사용하여 위젯의 모습에 영향을 미칠 수 있습니다. 옵션은 비어있을 수 있습니다.

 

다음은 두 개의 입력 필드를 사용하여 이름과 나이를 입력받는 프로그램입니다. 우리는 옵션없이 엔트리 위젯을 사용합니다.

from tkinter import *

window = Tk()
Label(window, text = "이름").grid(row = 0)
Label(window, text = "나이").grid(row = 1)

e1 = Entry(window)
e2 = Entry(window)

# 테이블의 0번째 행, 1번째 열에 배치합니다.
e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)

window.mainloop()

 

<실행 결과>

 

위의 프로그램에서는 사용자가 데이터를 입력할 수 있도록 엔트리 위젯을 생성하고 배치하였습니다.

어떻게 엔트리 위젯의 내용을 읽을 수 있을까요? get() 메소드를 사용하면 됩니다.

 

위의 프로그램에 "show"와 "quit" 2개의 버튼을 추가해봅시다. "show" 버튼을 누르면 show() 함수가 호출되게 연결합니다.

show()에서는 get() 메소드를 사용합니다. show() 사용자가 이 버튼을 클릭할 때마다, 엔트리 위젯의 내용을 인터프리터 셸에 출력합니다.

from tkinter import *

def show():
    print("이름 : %s\n나이 : %s" % (e1.get(), e2.get()))

parent = Tk()
Label(parent, text = "이름").grid(row = 0)
Label(parent, text = "나이").grid(row = 1)

e1 = Entry(parent)
e2 = Entry(parent)

e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)

Button(parent, text = '보이기', command = show).grid(row = 3, column = 1, sticky = W, pady = 4)
Button(parent, text = '종료', command = parent.quit).grid(row = 3, column = 0, sticky = W, pady = 4)

mainloop()

 

<실행 결과>

  • 이름에 "김봉민", 나이에 20 을 입력했을 때
이름 : 김봉민
나이 : 20

 

텍스트 위젯

텍스트 위젯(text widget)은 멀티 라인 텍스트 영역에 사용됩니다. 텍스트 위젯은 아주 강력하고 유연성 있으며 다양한 작업에 사용될 수 있습니다.

텍스트 위젯의 주요 용도는 간단한 멀티 라인 영역을 제공하는 것이지만 텍스트 위젯은 간단한 텍스트 편집기 또는 웹 브라우저로도 사용이 가능합니다.

텍스트 위젯은 링크를 표시하거나 이미지, HTML을 표시하는데도 사용될 수 있습니다. 심지어 텍스트를 표시할 때, CSS 스타일을 사용할 수도 있습니다.

 

Text() 메소드를 이용하면 텍스트 위젯을 만들 수 있습니다. 간단한 예로 30문자 X 2줄의 크기를 가지는 텍스트 위젯을 생성해봅시다.

우리는 insert()를 이용하여 텍스트 위젯에 데이터를 추가할 수 있습니다.

from tkinter import *

window = Tk()
T = Text(window, height = 5, width = 60)
T.pack()
# END는 텍스트를 끝 부분에 추가하라는 뜻입니다.
T.insert(END, "테스트 위젯은 여러 줄의\n텍스트를 표시할 수 있습니다.")

window.mainloop()

 

<실행 결과>

 

도전 과제

수식을 텍스트로 입력하면 이것을 계산하고 그 결과를 출력할 수 있는 간단한 계산기를 작성하여 봅시다. 수식의 형태는 파이썬과 동일하여야 합니다.

eval() 함수를 사용하여 사용자가 입력한 수식을 계산할 수 있습니다.

 

<실행 결과>

  • 초기 실행 화면

  • 문자열  '100 * 8 / 4.3 + 234 - 243' 을 입력 후 엔터키를 눌렀을 때