본문 바로가기
기타/tkinter 한꼬집씩만 따라해보기

5. 버튼에 동작 추가하기 #도전과제

by 회사원코딩 2022. 11. 15.

이전 포스팅

2022.11.15 - [기타/tkinter 한꼬집씩만 따라해보기] - 4. 버튼 추가하기

 

4. 버튼 추가하기

import tkinter as tk win = tk.Tk() tk.Button(master=win, text="클릭").grid(column=0, row=0) #

martinii.fun


이번 포스팅에서는

import tkinter as tk


def click():
    button.configure(text="클릭함")


win = tk.Tk()

button = tk.Button(win, text="클릭", command=click)
button.grid(column=0, row=0)

win.mainloop()

지난 포스팅에서 버튼을 생성해보았는데,

자고로 버튼의 핵심은 버튼을 눌렀을 때 뭔가 작동하는 것 아니겠습니까?

그래서 이 포스팅에서는 버튼에 작은 기능 하나를 추가해보았습니다.

button.configure(text="클릭함")

우선 button 인스턴스의 configure 메서드를 통해 text를 "클릭함"으로 변경하는 코드입니다.

뭔가 하찮은 예제 같지만, 버튼의 동작을 배우기에는 충분합니다.

위 기능을 수행하는 함수(click)를 하나 정의했고, 

해당 함수 이름을 button 인스턴스의 command 인자에 지정해 두었습니다.

button = tk.Button(win, text="클릭", command=click)
이 때 주의할 점은, command=click() 이라고 입력하지 않는 것입니다.
click 함수는 조금 전문적인 용어를 쓰자면, 바로 "콜백함수"라는 것입니다.
button을 정의할 때 곧바로 click을 실행하는 것이 아니라,
버튼을 클릭하는 시점에, command에 지정되어 있는 click 함수를 실행합니다.
콜백함수에 대한 정의는 검색을 통해 꼭 한 번 찾아 읽어 보시기를 권장합니다.

위의 전체코드를 한 번 실행해보겠습니다.

이번 예제에서는 win 인스턴스 안에 버튼 하나 밖에 없어서

버튼의 텍스트를 바꾸는 정말 간단한 동작을 만들어보았는데

커맨드가 익숙하지 않은 분께는 연습용 도전과제를 하나 드리겠습니다.

직접 아래처럼 작동하는 GUI창을 만들어보시기 바랍니다.

(예시답안 코드는 아래 첨부해 두었습니다..)

<참고사항>
command는 사용법을 보시면 아시겠지만
파라미터를 받지 못합니다. 함수명만 받지요.
이에 대한 해결법은 global이나 lambda 등 여러 가지가 있겠지만
한 번 고민과 검색 후에 꼭 한 번은 만들어보실 것을 추천드립니다.
대신, 5분 이상 고민해도 당장 해결책이 번쩍 떠오르지 않는다면
넘어가셔도 좋습니다.

숙제 코드 예시

더보기
import tkinter as tk

n = 0


def click():
    global n
    n += 1
    label.configure(text=f"{n}번 클릭함")
    


win = tk.Tk()

label = tk.Label(win, text=f"클릭 안함")
label.grid(row=0, column=0)

button = tk.Button(win, text="클릭", command=click)
button.grid(row=1, column=0)

win.mainloop()

 


다음 포스팅

2022.11.15 - [기타/tkinter 한꼬집씩만 따라해보기] - 6. Entry 입력창 추가하기

 

6. Entry 입력창 추가하기

import tkinter as tk win = tk.Tk() tk.Entry(win).grid(row=0, column=0) #

martinii.fun

 

반응형

'기타 > tkinter 한꼬집씩만 따라해보기' 카테고리의 다른 글

6. Entry 입력창 추가하기  (0) 2022.11.15
4. 버튼 추가하기  (0) 2022.11.15
3. 레이블 추가하기  (0) 2022.11.15

댓글0