Python tkinter 강좌 : 제 17강 - Scale
Scale(수치 조정 바)
Scale을 이용하여 값을 설정하기 위한 수치 조정 바를 생성할 수 있습니다.
Scale 사용
import tkinter
window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)
def select(self):
value="값 : "+str(scale.get())
label.config(text=value)
var=tkinter.IntVar()
scale=tkinter.Scale(window, variable=var, command=select, orient="horizontal", showvalue=False, tickinterval=50, to=500, length=300)
scale.pack()
label=tkinter.Label(window, text="값 : 0")
label.pack()
window.mainloop()def select(self):
value="값 : "+str(scale.get())
label.config(text=value)
var=tkinter.IntVar()
scale=tkinter.Scale(window, variable=var, command=select, orient="horizontal", showvalue=False, tickinterval=50, to=500, length=300)
scale.pack()
label=tkinter.Label(window, text="값 : 0")
label.pack()tkinter.Scale(윈도우 창, 매개변수1, 매개변수2, 매개변수3, ...)을 사용하여 해당 윈도우 창에 표시할 수치 조정 바의 속성을 설정할 수 있습니다.
매개변수를 사용하여 수치 조정 바의 속성을 설정합니다.
수치 조정 바를 생성 후, command 매개변수를 적용할 함수와 연결합니다.
command에 연결된 함수는 수치 조정 바의 값이 변경될 때마다 호출되며, 현재 값이 문자열 형태로 매개변수에 전달됩니다.
그러므로 연결할 함수는 매개변수를 하나 받도록 정의해야 하며, 예제의 select(self)에서 self에는 현재 값이 전달됩니다.
-
Tip :
scale.get()는 현재수치 조정 바에 표시된 값을 가져오며,var.get()은var에 저장된 값을 가져옵니다. -
Tip :
scale.get()은resolution이 정수일 경우int형식을,resolution이 소수(예:0.5)일 경우float형식을 반환합니다. 단,command에 전달되는 값은 항상 문자열이므로 계산에 사용하려면int()또는float()로 변환해야 합니다. -
Tip :
tkinter.ttk.Scale도 사용할 수 있지만,tickinterval,label,showvalue,resolution등의 매개변수를 지원하지 않습니다.
Scale Method
| 이름 | 의미 | 설명 |
|---|---|---|
| set() | 값 변경 | 수치 조정 바의 값을 변경 |
| get() | 값 반환 | 수치 조정 바의 값을 반환 |
Scale Parameter
수치 조정 바 텍스트 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| label | 수치 조정 바에 표시되는 문자 | - | 문자 |
| showvalue | 수치 조정 바에 값 표시 유/무 | True | Boolean |
수치 조정 바 형태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| width | 수치 조정 바의 슬라이드 너비 | 15 | 상수 |
| length | 수치 조정 바의 길이 | 100 | 상수 |
| relief | 수치 조정 바의 테두리 모양 | flat | flat, groove, raised, ridge, solid, sunken |
| borderwidth=bd | 수치 조정 바의 테두리 두께 | 1 | 상수 |
| foreground=fg | 수치 조정 바의 문자열 색상 | SystemButtonText | color |
| background=bg | 수치 조정 바의 배경 색상 | SystemButtonFace | color |
| troughcolor | 수치 조정 바의 내부 배경 색상 | SystemScrollbar | color |
| orient | 수치 조정 바의 표시 방향 | vertical | vertical, horizontal |
| sliderlength | 수치 조정 바의 슬라이더 길이 | 30 | 상수 |
| sliderrelief | 수치 조정 바의 슬라이더 테두리 모양 | raised | flat, groove, raised, ridge, solid, sunken |
| tickinterval | 수치 조정 바의 수치 값 간격 | 0 | 상수 |
수치 조정 바 형식 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| font | 수치 조정 바의 문자열 글꼴 설정 | TkDefaultFont | font |
| cursor | 수치 조정 바의 마우스 커서 모양 | - | 커서 속성 |
| digits | 수치 조정 바의 숫자 값을 문자열로 변환할 때 사용할 유효 숫자의 수 | 0 | 상수 |
| from_ | 수치 조정 바의 최솟값 | 0 | 상수 |
| to | 수치 조정 바의 최댓값 | 100 | 상수 |
| resolution | 수치 조정 바의 값 간격(단위), -1로 설정하면 제한 없음 |
1 | 상수 |
수치 조정 바 상태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| state | 상태 설정 | normal | normal, active, disabled |
| activebackground | active 상태일 때 수치 조정 바의 슬라이더 색상 | SystemButtonFace | color |
수치 조정 바 하이라이트 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| highlightcolor | 수치 조정 바가 선택되었을 때 색상 | SystemWindowFrame | color |
| highlightbackground | 수치 조정 바가 선택되지 않았을 때 색상 | SystemButtonFace | color |
| highlightthickness | 수치 조정 바가 선택되었을 때 두께 (두께 설정) | 2 | 상수 |
수치 조정 바 동작 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| takefocus | Tab 키를 이용하여 위젯 이동 허용 여부 | - | Boolean |
| command | 수치 조정 바의 값이 변경될 때 실행하는 메서드(함수), 현재 값이 문자열로 전달됨 | - | 메서드, 함수 |
| variable | 수치 조정 바의 값을 저장할 제어 변수 | - | tkinter.IntVar(), tkinter.DoubleVar(), tkinter.StringVar() |
| bigincrement | 수치 조정 바가 Tab된 상태에서 Ctrl 키를 이용하여 한 번에 이동할 양 | 0 | 상수 |
| repeatdelay | 버튼이 눌러진 상태에서 command 실행까지의 대기 시간 | 300 | 상수(ms) |
| repeatinterval | 버튼이 눌러진 상태에서 command 실행의 반복 시간 | 100 | 상수(ms) |
참고
tickinterval를 설정하였을 경우, 수치 조정 바에tickinterval값 마다 수치가 표시됨
-
cursor 매개변수
- arrow, based_arrow_down, based_arrow_up, boat, bogosity, bottom_left_corner, bottom_right_corner, bottom_side, bottom_tee, box_spiral, center_ptr, circle, clock, coffee_mug, cross, cross_reverse, crosshair, diamond_cross, dot, dotbox, double_arrow, draft_large, draft_small, draped_box, exchange, fleur, gobbler, gumby, hand1, hand2, heart, icon, iron_cross, left_ptr, left_side, left_tee, leftbutton, ll_angle, lr_angle, man, middlebutton, mouse, pencil, pirate, plus, question_arrow, right_ptr, right_side, right_tee, rightbutton, rtl_logo, sailboat, sb_down_arrow, sb_h_double_arrow, sb_left_arrow, sb_right_arrow, sb_up_arrow, sb_v_double_arrow, shuttle, sizing, spider, spraycan, star, target, tcross, top_left_arrow, top_left_corner, top_right_corner, top_side, top_tee, trek, ul_angle, umbrella, ur_angle, watch, wait, xterm, X_cursor
highlightbackground를 설정하였을 경우, 수치 조정 바가 선택되지 않았을 때에도 두께가 표시됨
takefocus를True로 설정한 뒤,Tab이 된 상태에서Ctrl키와좌우 방향키를 동시에 눌러bigincrement의 값 만큼 한 번에 이동됨
-
repeatdelay=100일 경우, 누르고 있기 시작한 0.1초 후에command가 실행됨 -
repeatdelay=1000,repeatinterval=100일 경우, 1초 후에 command가 실행되며 0.1초마다 버튼을 뗄 때까지command가 계속 실행됨
댓글 남기기