Python tkinter 강좌 : 제 25강 – Spinbox

   

Spinbox (수치 조정 기입창)


1

Spinbox을 이용하여 수치를 조정하고 입력받는 수치 조정 기입창를 생성할 수 있습니다.



Spinbox 사용


import tkinter

window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)

label=tkinter.Label(window, text="숫자를 입력하세요.", height=3)
label.pack()

def value_check(self):
    label.config(text="숫자를 입력하세요.")
    valid = False
    if self.isdigit():
        if (int(self) <= 50 and int(self) >= 0):
            valid = True
    elif self == '':
        valid = True
    return valid

def value_error(self):
    label.config(text=str(self) + "를 입력하셨습니다.\n올바른 값을 입력하세요.")

validate_command=(window.register(value_check), '%P')
invalid_command=(window.register(value_error), '%P')

spinbox=tkinter.Spinbox(window, from_ = 0, to = 50, validate = 'all', validatecommand = validate_command, invalidcommand=invalid_command)
spinbox.pack()


label=tkinter.Label(window, text="숫자를 입력하세요.", height=3)
label.pack()

def value_check(self):
    label.config(text="숫자를 입력하세요.")
    valid = False
    if self.isdigit():
        if (int(self) <= 50 and int(self) >= 0):
            valid = True
    elif self == '':
        valid = True
    return valid

def value_error(self):
    label.config(text=str(self) + "를 입력하셨습니다.\n올바른 값을 입력하세요.")

validate_command=(window.register(value_check), '%P')
invalid_command=(window.register(value_error), '%P')

spinbox=tkinter.Spinbox(window, from_ = 0, to = 50, validate = 'all', validatecommand = validate_command, invalidcommand=invalid_command)
spinbox.pack()

tkinter.Spinbox(윈도우 창, 파라미터1, 파라미터2, 파라미터3, ...)을 사용하여 수치 조정 기입창의 속성을 설정할 수 있습니다.

파라미터를 사용하여 수치 조정 기입창의 속성을 설정합니다.

사용자 정의 함수래핑하여 콜백을 포함하여야 유효성 검사를 실행할 수 있습니다.

validate를 이용하여 유효성 검사반응 조건을 설정합니다.

validatecommand를 이용하여 유효성을 검사하며, invalidcommand를 통하여 올바르지 않을 때의 함수를 실행합니다.



Spinbox Method###


수치 조정 기입창 메소드
이름의미설명
insert(index, “문자열”)문자열 삽입해당 index 위치에 문자열을 삽입
delete(start_index, end_index)문자열 삭제start_index부터 end_index까지의 문자열 삭제
get(start_index, end_index)문자열 반환start_index부터 end_index까지의 문자열 반환
index(index)인덱스 반환index가 음수 일 경우, 1.0으로 반환
identify(x, y)요소 식별x, y 위치의 위젯 요소 반환 (entry, buttonup, buttondown, '')
invoke(button)버튼 실행buttonup 또는 buttondown 실행



수치 조정 기입창 콜백
이름의미설명
%d액션 코드 반환삭제=0, 삽입=1, 포커스 인=textvariable, 포커스 아웃=textvariable
%i텍스트 수정 인덱스 반환삽입 또는 삭제=해당 index, 포커스인 또는 포커스 아웃=-1
%P텍스트 부여 값변경이 가능한 경우 텍스트에 부여될 값
%s텍스트가 변경되기 전 값텍스트가 변경되기 전의 유효한 값
%S텍스트 변경된 후 값텍스트가 변경된 후의 유효한 값
%vvalidate 현재 값수치 조정 기입창의 validate 파라미터의 현재 값
%V콜백 확인어떤 호출로 인하여 콜백되었는지 확인
%W위젯의 이름호출된 위젯의 이름을 확인



Spinbox Parameter


수치 조정 기입창 텍스트 설정
이름의미기본값속성
textvariable수치 조정 기입창에 표시할 문자열을 가져올 변수--
justify수치 조정 기입창의 문자열이 여러 줄 일 경우 정렬 방법leftcenter, left, right



수치 조정 기입창 형태 설정
이름의미기본값속성
width수치 조정 기입창의 너비20상수
relief수치 조정 기입창의 테두리 모양sunkenflat, groove, raised, ridge, solid, sunken
borderwidth=bd수치 조정 기입창의 테두리 두께0상수
background=bg수치 조정 기입창의 배경 색상SystemButtonFacecolor
foreground=fg수치 조정 기입창의 문자열 색상SystemButtonFacecolor
insertwidth수치 조정 기입창의 키보드 커서 너비2상수
insertborderwidth수치 조정 기입창의 키보드 커서 테두리 두께0상수
insertbackground수치 조정 기입창의 키보드 커서 색상SystemWindowTextcolor
selectborderwidth수치 조정 기입창의 문자열 블록처리 테두리 두께0상수
selectbackground수치 조정 기입창의 문자열 블록처리 배경 색상SystemHighlightTextcolor
selectforeground수치 조정 기입창의 문자열 블록처리 문자열 색상SystemHighlightTextcolor
buttonbackground수치 조정 기입창의 수치 조정 버튼 배경 색상SystemButtonFacecolor



수치 조정 기입창 형식 설정
이름의미기본값속성
font수치 조정 기입창의 문자열 글꼴 설정TkDefaultFontfont
cursor수치 조정 기입창의 마우스 커서 모양-커서 속성
buttoncursor수치 조정 기입창의 수치 조정 버튼 마우스 커서 모양-커서 속성
xscrollcommand수치 조정 기입창의 가로스크롤 위젯 적용-Scrollbar위젯.set
from_수치 조정 기입창의 최솟값0상수
to수치 조정 기입창의 최댓값0상수
increment 수치 조정 기입창의 수치 간격1상수
values 수치 조정 기입창의 사용자 정의 수치 값-list, tuple 등
format_ 수치 조정 기입창의 수치 표시 형식-정밀도 설정
exportselection수치 조정 기압창의 선택 항목 여부 설정TrueBoolean



수치 조정 기입창 상태 설정
이름의미기본값속성
state상태 설정normalnormal, readonly, disabled
activebackgroundactive 상태일 때 수치 조정 기입창의 배경 색상SystemButtonFacecolor
readonlybackgroundreadonly 상태일 때 수치 조정 기입창의 배경 색상SystemButtonFacecolor
disabledbackgrounddisabeld 상태일 때 수치 조정 기입창의 배경 색상SystemButtonFacecolor
disabledforegrounddisabeld 상태일 때 수치 조정 기입창의 문자열 색상SystemDisabledTextcolor



수치 조정 기입창 하이라이트 설정
이름의미기본값속성
highlightcolor수치 조정 기입창이가 선택되었을 때 색상SystemWindowFramecolor
highlightbackground수치 조정 기입창이가 선택되지 않았을 때 색상SystemButtonFacecolor
highlightthickness수치 조정 기입창이가 선택되었을 때 두께 (두께 설정)0상수



수치 조정 기입창 동작 설정
이름의미기본값속성
takefocusTab 키를 이용하여 위젯 이동 허용 여부FalseBoolean
command수치 조정 기입창에서 수치가 조정될 때 실행하는 메소드(함수)-메소드, 함수
wrap수치 조정 기입창에서 수치가 초과되거나 미만일 경우, 최솟값이나 최댓값으로 변경FalseBoolean
insertontime기입창의 키보드 커서 깜빡임이 보이는 시간600상수(ms)
insertofftime기입창의 키보드 커서 깜빡임이 보이지 않는 시간300상수(ms)
repeatdelay수치 조정 버튼이 눌러진 상태에서 command 실행까지의 대기 시간400상수(ms)
repeatinterval수치 조정 버튼이 눌러진 상태에서 command 실행의 반복 시간100상수(ms)
validate수치 조정 기입창의 유효성 검사 실행 조건nonenone, focus, focusin, focusout, key, all
validatecommand유효성 검사 평가 함수-함수
invalidcommandvalidateCommand가 False를 반환 할 때 실행할 함수-함수



참고

  • 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

  • values[5, 10, 50, 100]으로 설정하였을 경우, 목록의 순서로 증감

  • highlightbackground를 설정하였을 경우, 수치 조정 기입창이 선택되지 않았을 때에도 두께가 표시됨

  • repeatdelay=100 일 경우, 누르고 있기 시작한 0.1초 후command가 실행됨

  • repeatdelay=1000, repeatinterval=100 일 경우, 1초 후에 command가 실행되며 0.1초마다 버튼을 뗄 때까지 command가 계속 실행됨

  • validate 파라미터

    • none : 수치 조정 기입창의 유효성 검사 실행하지 않음
    • focus : 수치 조정 기입창이 포커스를 받거나 잃을 때 validateCommand 실행
    • focusin : 수치 조정 기입창이 포커스를 받을 때 validateCommand 실행
    • focusout : 수치 조정 기입창이 포커스를 잃을 때 validateCommand 실행
    • key : 수치 조정 기입창이 수정될 경우 validateCommand 실행
    • all : 수치 조정 기입창의 모든 validate에 대해 validateCommand 실행


도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post Python tkinter 강좌 : 제 26강 – Combobox ⤧  Previous post Python tkinter 강좌 : 제 24강 – Toplevel