Tkinter 튜토리얼-버튼
Tkinter 버튼 위젯은 Tkinter Label 위젯과 매우 유사합니다. 추가 default
옵션이 있다는 점을 제외하면 레이블의 옵션과 거의 동일한 옵션이 있습니다. 하나의 기본 버튼 예제 다음에이 default
에 대한 세부 정보를 제공합니다.
아래 데모 코드를 사용하여 가장 간단한 두 개의 버튼을 생성 할 수 있습니다.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()
코드를 실행하면 서로 인접한 두 개의 버튼이있는 창이 표시됩니다.
Tkinter 버튼 default
옵션
버튼의 default
옵션은 GUI 에서 버튼이 기본 버튼임을 알려줍니다. 예를 들어, 사용자가 Enter
또는 Return
키를 누를 때 자동으로 호출되는 버튼입니다.
Tkinter 버튼 명령 콜백
command
옵션은 버튼을 누를 때 콜백 기능을 호출합니다.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
labelExample = tk.Button(app, text="0")
def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
buttonExample.pack()
labelExample.pack()
app.mainloop()
기본 창에 버튼과 레이블 위젯을 만듭니다. 버튼을 클릭 할 때마다 레이블 텍스트의 숫자가 1 씩 증가합니다.
def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
change_label_number
는 버튼을 클릭했을 때 호출되는 함수입니다. 레이블 수를 얻은 다음 레이블을 1 씩 증가시킵니다.
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
버튼과 콜백 함수 사이의 바인딩을 만듭니다.
인수가있는 Tkinter 버튼 명령 콜백 기능
콜백 함수에 인수를 전달해야하는 경우 functools
의 partial
객체가 필요합니다. partial
객체는 위치 인자 args
와 키워드 인자 keywords
를 가진 호출 가능한 객체입니다.
아래 코드 스 니펫은 버튼 명령에서이 ‘부분’기능을 사용하는 방법을 보여줍니다.
def change_label_number(num):
counter = int(str(labelExample["text"]))
counter += num
labelExample.config(text=str(counter))
buttonExample = tk.Button(
app, text="Increase", width=30, command=partial(change_label_number, 2)
)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook