본문 바로가기
프로그래밍/파이썬

[파이썬 GUI] tkinter 5(입력 위젯 만들기)

by 인성패밀리 2022. 10. 26.
반응형

이번에는 문자열을 입력받을 수 있는 위젯을 만드는 방법을 알아보겠습니다.

 

요번까지 Label, Button, Entry까지 하고 나면 기본적인 GUI를 만들 수 있습니다. 이를 이용하는 간단한 응용 방법에 대해서도 알아보도록 하겠습니다.

 

어떤 값을 입력받으려면 Entry 위젯을 사용해야 합니다.

 

Entry에 대해서 다음 순으로 알아보도록 하겠습니다.

 

1. 기본 사용 방법

2. Entry 옵션

3. 버튼을 이용한 응용 방법

 

1. 기본 사용 방법

기본 사용방법은 우선 나타나게 하는 방법입니다. 지금까지 해왔던 Label, Button과 비슷한 구조입니다.

from tkinter import *

gui = Tk()
gui.title("입력을 받아보자!")
gui.geometry("400x300+300+300")

# 그냥 위젯 설명용
Label(gui, text="입력1 :").grid(row=0, column=0, padx=5, pady=5)

# Entry 기본 사용법
Entry(gui).grid(row=0, column=1, padx=5, pady=5)

gui.mainloop()

코드 실행 결과

글씨가 작죠? -> font 옵션을 추가하면 됩니다.

Entry(gui).grid(row=0, column=1, padx=5, pady=5)

-> 단순하게 어디 프레임에 위치할 것인지만 정하면 간단하게 사용이 가능합니다.

-> 단, 입력한 값을 가지고 오고 싶다면 위젯을 변수에 넣어야 합니다.

2. Entry 옵션

Entry 위젯의 옵션으로는 음영으로 입력을 유도한다거나, 입력받지 못하게 막아놓거나, 폰트를 변경하거나 크기를 조절하는 등의 옵션들이 있습니다.

하나 씩 알아보도록 하겠습니다.

from tkinter import *

gray = "#c8c8c8"

gui = Tk()
gui.title("입력을 받아보자!!")
gui.geometry("400x300+300+300")

input1 = Entry(gui, width=15)
input1.pack(pady=5)

input2 = Entry(gui, font=("consolas", 15), fg=gray)
input2.pack(pady=5)
input2.insert(0, "id")

input3 = Entry(gui, state="disable")
input3.pack(pady=5)

gui.mainloop()

이 코드의 실행 결과입니다.

-> 높이는 알아서 설정이 됩니다.

-> 폰트가 커지면 알아서 늘어납니다.

-> bind 함수와 같이 사용하면 진짜 입력을 유도 할 수 있게 끔 만들 수 있습니다.

 

fg=gray

-> css 색상 코드를 문자열로 전달하면 그 색을 타나낼 수 있습니다.

-> fg가 있으면 bg도 있습니다.

 

input1.insert(0, "id")

-> insert 함수로 entry에 문자를 넣을 수 있습니다.

-> 넣었으면 지우는 것도 있습니다. delete 함수를 사용하면 됩니다.

 

state="disable"

-> 입력을 막아버립니다.

-> disable말고도 readonly 속성과 normal 속성이 있습니다.

3. 버튼을 이용한 응용 방법

입력 받은 값을 버튼을 이용하여 처리하는 방법에 대해서 알아보겠습니다.

from tkinter import *


def push():
    value = input1.get()
    text['text'] = eval(value)


gui = Tk()
gui.title("입력을 받아보자!!")
gui.geometry("400x300+300+300")

input1 = Entry(gui, font=("consolas", 15))
input1.pack(pady=5)

text = Label(gui, text="", font=("consolas", 13))
text.pack(pady=5)

Button(gui, text="push", command=push).pack(pady=5)

gui.mainloop()

실행 결과입니다.

수식을 넣고 버튼을 누르면 계산이 됩니다.

value = input1.get()

-> input1의 위젯에 있는 문자를 가져옵니다.

 

text['text'] = eval(value)

-> text위젯에 text를 eval(value)의 결과를 집어 넣습니다.

-> eval 함수는 문자로 된 것을 코드로 인식을 합니다.

반응형

댓글