Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter Entry 위젯에서 StringVar 객체를 활용하는 방법

Tkinter에서 StringVar 객체는 Entry 위젯이나 Label 위젯과 같은 위젯의 값을 효율적으로 관리할 수 있게 해주는 특별한 변수 클래스입니다. 위젯의 textvariable 옵션에 StringVar 객체를 할당하면, 변수의 값이 변경될 때마다 위젯에 자동으로 반영되고, 반대로 사용자가 위젯에 입력한 내용도 실시간으로 변수에 저장됩니다.

StringVar의 기본 개념

예를 들어, Spinbox 위젯에 StringVar를 연결하는 코드는 다음과 같습니다.

data = ['Car', 'Bus', 'Truck', 'Bike', 'Airplane']

var = StringVar(win)

my_spinbox = Spinbox(win, values=data, textvariable=var)

위 코드에서는 문자열 리스트를 생성한 후 StringVar 객체인 var를 만들었습니다. 그다음 이 var를 Spinbox 위젯의 textvariable에 할당했습니다. Spinbox의 현재 값을 가져오려면 var.get() 메서드를 사용하면 됩니다.

Entry 위젯에서 StringVar 사용 예제

다음 예제는 Entry 위젯에서 StringVar 객체를 활용하여 사용자 입력값을 실시간으로 읽어오는 방법을 보여줍니다.

from tkinter import *

top = Tk()
top.geometry("700x300")
top.title("StringVar Object in Entry Widget")

var = StringVar(top)

def submit():
   Label2.config(text="Your User ID is: " + var.get(), font=("Calibri,15,Bold"))

Label1 = Label(top, text='Your User ID:')
Label1.grid(column=0, row=0, padx=(20,20), pady=(20,20))

myEntry = Entry(top, textvariable=var)
myEntry.grid(column=1, row=0, padx=(20,20), pady=(20,20))

myButton = Button(top, text="Submit", command=submit)
myButton.grid(column=2, row=0)

Label2 = Label(top, font="Calibri,10")
Label2.grid(column=0, row=1, columnspan=3)

top.mainloop()

코드 설명

  • var = StringVar(top): 최상위 윈도우(top)에 연결된 StringVar 객체를 생성합니다.
  • myEntry = Entry(top, textvariable=var): Entry 위젯의 textvariable 옵션에 var를 바인딩하여 입력값과 변수가 동기화되도록 합니다.
  • var.get(): Submit 버튼을 클릭하면 submit() 함수가 호출되고, var.get()을 통해 Entry에 입력된 현재 값을 가져와 결과 레이블에 표시합니다.

실행 결과

위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

Tkinter Entry 위젯에서 StringVar 객체를 활용하는 방법

사용자가 Entry 필드에 ID를 입력하고 Submit 버튼을 누르면, 하단 레이블에 "Your User ID is:"라는 문구와 함께 입력된 값이 굵은 글씨로 표시됩니다. 이처럼 StringVar를 사용하면 위젯 간 데이터 공유와 상태 관리가 훨씬 간편해집니다.