본문 바로가기
Python/Tkinter

[Tkinter] 2. Tk의 작동 컨셉

by 파인스코어 2024. 2. 13.
728x90

위젯 widget

위젯은 화면에 표시되는 모든 것을 말한다.

버튼, 체크박스, 텍스트 공간, 스크롤바 등 화면에 표시되는 각각의 요소를 위젯이라고 부른다.

위젯 클래스

위젯은 버튼, 프레임, 체크박스 등을 나타내는 클래스의 인스턴스인 객체다.

위젯을 생성하기 위해서는 사용하고자 하는 위젯의 클래스를 인스턴스화하여 생성한다.

위젯 계층

위젯을 생성할 때는 특정 위젯 클래스와 부모에 대한 정보가 필요하다.

부모 위젯 객체를 기준으로 또 다른 위젯을 자식 객체로 배치하면서 계층을 이루게 된다.

위젯 생성

root = Tk()
content = ttk.Frame(root)
button = ttk.Button(content)
Line 1: 최상위 부모 위젯 root
Line 2: root의 하위 Frame 위젯 content
Line 3: content의 하위 Button 위젯 button

위젯 구성 옵션

위젯에는 표시 방법, 작동 방법 등을 제어하는 여러가지 옵션들이 존재한다.

생성과 동시에 옵션을 정할 수도 있고 도중에 변경도 가능하다.

button = ttk.Button(root, text="Hello", command="buttonpressed")
button['text'] = 'goodbye'
Line 1: Button 위젯을 텍스트와 실행 함수를 미리 정한 후 생성
Line 2: button의 텍스트를 변경

위젯 내부 검사

winfo_* 메소드를 이용해서 위젯에 대한 정보를 확인할 수 있다.

자세한 내용은 https://tcl.tk/man/tcl8.6/TkCmd/winfo.htm 에서 찾아보길 바란다.

기하 관리자 Geometry Manager

Tk는 기하 관리자를 이용하여 컨테이너 위젯 안의 위젯 위치를 정해준다.

grid, pack, place 라는 세 가지 기하 관리자를 제공한다.

사용 방법은 나중에 자세하게 다루기로 하자.

이벤트 처리

Tk는 버튼 누르기, 키 입력, 마우스 이동, 창 크기 조정과 같은 운영체제로부터의 이벤트를 파악하는 이벤트 루프를 실행한다.

명령 콜백

버튼을 눌렀을 때와 같은 특정한 방식으로 수행하는 이벤트를 지정할 때는 위젯의 command 구성 옵션으로 지정할 수 있다.

def calculate(*args):
    ...

ttk.Button(mainframe, text="Calculate", command=calculate)

이벤트에 바인딩

위젯의 이벤트가 작동할 때 실행할 함수를 bind 함수를 사용해서 지정할 수 있다.

canvas.bind("<B1-Motion>", drawing)
canvas.bind("<MouseWheel>", scroll)

참조

https://tkdocs.com/tutorial/concepts.html

728x90