Python tkinter 버튼(button) 만들기

Python GUI 프로그래밍을 위한 기본 모듈인 tkinter를 활용해 버튼을 만들어 보겠습니다.

 

버튼 만들기

기본적인 버튼을 만드는 방법은 간단합니다.

tkinter에 Button(window) 함수로 생성합니다. 매개변수로 window(창)를 넣어줘야 합니다.

생성한 후 pack() 함수를 통해 버튼을 배치하면 내가 생성한 창 안에 버튼이 보이게 됩니다.

import tkinter
win = tkinter.Tk()

# 버튼 만들기 + 옵션 설정
btn = tkinter.Button(win,
    text = 'btn',
    background = 'white')

# 버튼 옵션설정
btn.config(width = 5, height = 2)
btn.config(text = "button")

# 버튼 배치하기
btn.pack()

win.mainloop()

예제를 보면 알 수 있지만, 라벨을 선언하면서 옵션을 설정해도 되고

config() 함수로 옵션을 설정할 수 도 있습니다.

 

버튼의 동작

버튼을 만들었으면 해당 버튼을 클릭했을때의 동작을 설정해줘야 합니다.

command option을 통해서 버튼이 클릭되었을 때 동작할 함수를 설정할 수 있습니다.

num = 0
def countUp():
    global num
    num += 1
    print(num)

btn.config(command = countUp)

버튼을 클릭할때 마다 1씩 증가해서 콘솔에 출력되는 것을 확인할 수 있습니다.

 

실제 버튼을 클릭하지 않더라도, invoke() 함수로 실제클릭한것 같은 효과를 낼 수 있습니다.

for i in range(3):
    btn.invoke()

 

위처럼 강제로 실행할 수도 있지만, 보통은 다른 특정 동작이나 이벤트 때 버튼을 클릭한 것처럼

처리해줄 때 사용하면 좋을 것 같습니다.

 

 

버튼의 옵션들

1. 버튼의 문자 관련

이름 기능 기본값 속성
text 버튼에 표시할 문자열    
textvariable 버튼에 표시할 문자열변수   변수
font 버튼의 폰트 TkDefaultFont font
anchor 버튼안 문자열 또는 이미지의 위치 center n, ne, e, se, s, sw, w, nw, center
wraplength 자동 줄내림 설정 길이 0 숫자
justify 버튼내 문자열 정렬 center left, center, right

 

2. 버튼의 동작 관련

이름 기능 기본값 속성
command 버튼이 active 상태일 때 실행할 함수 설정   함수
takefocus Tab키로 위젯 이동 허용여부 True Boolean
repeatdelay 버튼이 눌러져 command 실행까지 대기시간 0 숫자(ms)
repeatinterval 버튼이 눌러져 command 실행의 반복시간 0 숫자(ms)
state 버튼 상태설정 normal normal, active, disabled

 

3. 버튼의 이미지 관련

이름 기능 기본값 속성
image 버튼에 이미지 추가    
bitmap 버튼의 기본이미지 설정   info, error, question, warning, questhead, hourglass, gray75, gray25
compound 버튼에 문자열과, 이미지 속성이 동시에 있을때 이미지위치 설정 none top, center, bottom, left, right, none

 

4. 버튼 디자인 관련

이름 기능 기본값 속성
width 버튼의 길이 0 숫자
height 버튼의 높이 0 숫자
font 버튼의 폰트 설정 TkDefaultFont 폰트
padx 버튼의 가로 padding(여백) 1 숫자
pady 버튼의 세로 padding(여백) 1 숫자
cursor 버튼의 마우스 커서모양   pointer, arrow 등 cursor 속성
relief 버튼 테두리 설정 flat flat, solid, ridge, sunken, raised, groove
overrelief 버튼에 마우서가 올라있을때 ( :hover ) 테두리 설정 raised flat, solid, ridge, sunken, raised, groove
foreground 버튼 문자열 색상 SystemButtonText color
background 버튼의 배경 색상 SystemButtonFace color
borderwidth 버튼의 테두리 두께 2 숫자
activeforeground active상태버튼의 문자열 색상 SystemButtonText color
activebackground active상태버튼의 배경 색상 SystemButtonFace color
disabledforeground disabled상태버튼의 문자열 색상 SystemDisabledText color
highlightcolor 버튼이 선택되었을때 하이라이트 색상 SystemWindowFrame color
highlightbackground 버튼이 선택되지 않았을때 하이라이트 색상 SystemButtonFace color
highlightthickness 버튼이 선택되었을때 하이라이트 두께 0 숫자