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 | 숫자 |