지난 포스팅
지난 포스팅까지 두 회에 걸쳐
콤보박스를 엔트리처럼 입력하는 방법, 리스트에서 선택만 하게 하는 방법을 알아보았습니다.
2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 12. 콤보박스에서 주어진 값만 선택 할 수 있게 변경하기
이번 포스팅에서는 : 콤보박스 값을 레이블에 넣기
이제 콤보박스 사용법은 어렴풋이 아시게 됐을텐데요.
아래 코드를 한 번 읽어보겠습니다.
import tkinter as tk
from tkinter import ttk # 콤보박스는 tk 말고 ttk에 있음
def button_click():
"""상단 레이블의 텍스트를 변경하는 콜백함수"""
label.configure(text=f"{number.get()}을 선택하셨습니다.")
win = tk.Tk()
label = tk.Label(win, text="번호를 선택하고 확인버튼을 눌러주세요.")
label.grid(row=0, column=0)
number = tk.IntVar()
number.set(30)
combobox = ttk.Combobox(win, textvariable=number)
combobox.grid(row=1, column=0)
combobox["values"] = [10, 20, 30, 40, 50]
button = tk.Button(win, text="확인", command=button_click)
button.grid(row=2, column=0)
win.mainloop()
보셨다시피
콤보박스에서 값을 고르고 버튼을 누르면 레이블의 텍스트가 바뀌는 GUI입니다.
엔트리에서의 예제와 굉장히 유사하지요? 콜백함수를 정의하고 command에 콜백함수 이름을 넣는 방식입니다.
그럼 이번에도 도전과제를 하나 드리겠습니다.
도전과제
아래처럼 버튼없이 바로 레이블이 변경되도록 하는 코드를 작성해보세요.
힌트 : 이벤트 바인딩, "<<ComboboxSelected>>"
예시답안은 아래에
더보기
import tkinter as tk
from tkinter import ttk # 콤보박스는 tk 말고 ttk에 있음
def click(*args):
label.configure(text=f"{number.get()}을 선택하셨습니다.")
win = tk.Tk()
label = tk.Label(win, text="번호를 선택하고 확인버튼을 눌러주세요.")
label.grid(row=0, column=0)
number = tk.IntVar()
combobox = ttk.Combobox(win, textvariable=number)
combobox.grid(row=1, column=0)
combobox["values"] = [10, 20, 30, 40, 50]
combobox.current(0)
combobox.bind("<<ComboboxSelected>>", click)
win.mainloop()
콤보박스에는 <<ComboboxSelected>>라는 가상이벤트가 존재합니다.
키보드나 마우스를 작동하는 이벤트가 아니라, 콤보박스의 어느 값이 선택됐을 때 발동되는 이벤트인데요.
(뾰족괄호가 두 겹입니다.)
<<ComboboxSelected>>에다가 특정 콜백함수를 바인딩하면
<KeyRelease>나 <ButtonRelease-B1> 같은 이벤트보다 확실하게 코드를 짤 수 있죠.
다음 포스팅
2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 14. 체크박스 버튼 만들기
'GUI 튜토리얼 > tkinter 한꼬집씩만 따라해보기' 카테고리의 다른 글
14. 체크박스 버튼 만들기 (0) | 2022.11.16 |
---|---|
12. 콤보박스에서 주어진 값만 선택 할 수 있게 변경하기 (0) | 2022.11.16 |
11. 콤보박스 위젯 추가하기 (0) | 2022.11.16 |
댓글