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

Tkinter에서 스케일 위젯으로 엔트리 위젯 값 변경하기

Tkinter의 Entry(엔트리) 위젯은 사용자로부터 한 줄짜리 텍스트 입력만 받을 수 있는 입력 위젯입니다. 별도의 제한을 설정하지 않는 한 텍스트 필드에 모든 문자를 입력할 수 있습니다. 이러한 Entry 위젯의 값을 Scale(스케일) 위젯을 이용해 손쉽게 변경할 수 있습니다.

Scale 위젯은 최솟값과 최댓값(임계값)을 가지고 있어, 사용자가 지정된 범위 안에서만 값을 조절하도록 제한할 수 있습니다. 따라서 슬라이더를 움직이면 Entry 위젯의 값이 함께 갱신되는 연동 기능을 구현할 때 유용합니다.

Scale 위젯의 값을 조정할 때 Entry 위젯의 값도 동시에 업데이트하려면, 두 위젯에 공통으로 전달되는 변수를 생성해야 합니다. Tkinter에서 제공하는 IntVar와 같은 변수 클래스를 활용하면 위젯 간 데이터 바인딩이 자동으로 처리됩니다.

예제 코드

#Import the Tkinter Library
from tkinter import *
from tkinter import ttk

#Create an instance of Tkinter Frame
win = Tk()

#Set the geometry of window
win.geometry("700x350")

#Create an Integer Variable to set the initial value of Scale
var = IntVar(value=10)

#Create an Entry widget
entry = ttk.Entry(win,width= 45,textvariable=var)
scale = Scale(win, from_=10, to=200, width= 20, orient="horizontal", variable=var)

entry.place(relx= .5, rely= .5, anchor= CENTER)
scale.place(relx= .5, rely= .6, anchor = CENTER)

win.mainloop()

실행 결과

위 코드를 실행하면 화면 중앙에 Entry 위젯과 Scale 위젯이 나타납니다. Scale의 슬라이더를 좌우로 움직이면 textvariable 옵션으로 연결된 var 변수가 실시간으로 갱신되면서 Entry 위젯에 표시되는 값도 함께 변경됩니다.

핵심 포인트는 다음과 같습니다:

  • 공유 변수: IntVar(value=10)로 초기값이 10인 정수형 변수를 생성합니다.
  • 값 범위 설정: Scale 위젯의 from_=10, to=200 옵션으로 슬라이더가 조절할 수 있는 값의 범위를 지정합니다.
  • 양방향 연동: Entry와 Scale 양쪽 모두 variable(또는 textvariable) 옵션에 동일한 변수를 할당하므로, 어느 한쪽에서 값을 변경해도 다른 쪽에 즉시 반영됩니다.

이 방식은 슬라이더로 수치를 직관적으로 선택하면서 정확한 값을 텍스트로 확인하거나 직접 입력해야 하는 설정 화면, 필터 UI 등을 만들 때 매우 유용하게 활용됩니다.