tkinter
tkinter는 파이썬에서 그래픽 사용자 인터페이스(GUI: Graphical User Interface)를
개발할 때 필요한 모듈이다. tkinter을 이용하면 윈도우를 생성하고 버튼이나
레이블과 같은 위젯을 이용하여서 사용자와 상호작용하는 프로그램을 작성할 수
있다. tkinter의 유래는 아래와 같다.
- tkinter는 예전부터 유닉스 계열에서 사용되던 Tcl/Tk 위에 객체 지향 계층을 입힌 것이다.
- Tk는 John Ousterhout에 의하여 Tcl 스크립팅 언어를 위 한 GUI 확장으로 개발
- tkinter : Tk interface의 약자 (파이썬에서 가장 많이 이용되는 GUI 모듈)
tkinter의 간단한 예시를 보자.
위에서부터 설명하자면
- tkinter을 사용하려면 tkinter 모듈을 포함시켜야 하는데, *는 tkinter 모듈에서 모든 클래스와
함수를 포함하겠다는 의미이다. - Tk 클래스 객체를 생성하면 화면에 윈도우(root)하나를 생성한다.
- 윈도우로 레이블 위젯을 생성하고, 글자는 Hello, World!로 한다.
- 글자를 표시할 정도로만 레이블 위젯 크기(압축 배치 관리자)를 축소한다.
(pack이 호출되어야만 위젯이 화면에 나타난다.) - mainloop() 메소드는 마우스 버튼과 같은 이벤트를 처리하면서 사용자가 윈도우를 닫을 때까지
반복한다. 이걸 이벤트 루프라고 한다.
버튼과 이벤트 처리
텍스트/이미지를 포함하는 사용자 상호작용을 위한 위젯이다.
배치 관리자
pack배치 관리자는 기본값으로 위젯을 추가된 순서에 따라 수직으로 쌓는다.
다른 예를 보자.
압축 배치 관리자를 이용하여 버튼을 수편으로 배치하였다.
또 다른 예를 보자.
pady는 상단과 하단에 픽셀을 추가하고,
padx는 왼쪽 및 오른쪽에 픽셀을 추가한다.
또또 다른 예를 보자.
버튼의 텍스트를 다른 문장으로 변경해보았다.
----------
배치관리자 : 컨테이너 안에서 위젯들의 위치와 크기를 결정
- Grid : 격자 배치 관리자(grid geometry manager)
테이블 형태의 배치, grid() 메소드 이용 - Pack : 압축 배치 관리자(pack geometry manager)
위젯들을 부모 위젯 안에 압축
자식 위젯들을 사각형 블록으로 간주하여 프레임 안에 배치
pack()메소드 사용 - Place : 절대 배치 관리자(place geometry manager)
주어진 위치에 위젯을 배치, place() 메소드 사용
이벤트 처리
tkinter 프로그램은 이벤트에 기반을 두고 동작된다.
우리는 버튼에 이벤트를 처리하는 함수를 붙일 수 있고, 버튼에 이벤트를 처리하는 함수가
연결되어 있으면, 이벤트가 발생할 때, 그 함수가 호출된다.
이벤트가 발생하였을 때 호출되는 함수를 콜백함수(callback function) 또는 핸들러(handler)
라고 한다. 버튼에 콜백함수를 등록하려면 버튼의 생성자를 호출할 때, command 매개변수에
이벤트를 처리하는 함수의 이름을 지정하면 된다.
복잡하게 느껴지니 간단하게 정리하자.
- 이벤트가 발생할 때 호출되는 함수: 콜백함수 또는 핸들러
- 콜백함수 등록 방법: command 매개변수에 지정하면 됨
아래의 형식을 보자.
몇가지의 예제를 보자.
버튼을 클릭하면 텍스트가 바뀐다.
미리 정의해둔 callback()함수가 Button()의 생성자 호출에서 이벤트 처리함수로 등록된다.
레이블과 버튼을 혼용해서 사용했다.
tkinter의 위젯들
- Button : 버튼
- Canvas : 화면에 그릴 때 사용
- Checkbutton : 2가지 구별되는 값을 가지는 변수 표현
- Entry : 한줄 텍스트 입력받는 필드
- Frame : 컨테이너 클래스 (다른 위젯을 포함)
- Label : 텍스트 표시
- Listbox : 선택사항 표시
- Menu : 메뉴 표시
- Menubutton : 메뉴 버튼
- Message : 텍스트 표시(자동적으로 텍스트 축소)
- Radiobutton : 여러 개의 값 중 하나의 값만을 가짐
- Scale : 슬라이더를 끌어서 수치값 입력
- Scrollbar : 스크롤 바 제공
- Text : 여러가지 스타일/속성으로 텍스트 표시
- Toplevel : 최상위 윈도우
- LabelFrame : 경계선과 제목을 가지는 프레임 위젯
- PanedWindow : 자식 위젯들을 크기조절이 가능한 패널로 관리하는 컨테이너 위젯
- Spinbox : 특정한 범위에서 값을 선택하는 엔트리 위젯의 변형
단순 위젯과 컨테이너 위젯
파이썬에서 제공하는 위젯은 크게 단순 위젯과 컨테이너 위젯으로 나뉜다.
컨테이너 위젯은 다른 위젯을 내부에 넣을 수 있는 위젯이다.
- 단순 위젯
Button, Canvas, Checkbutton, Entry, Label, Message 등 - 컨테이너 위젯
다른 컴포넌트를 안에 포함할 수 있는 위젯
Frame, Toplevel, Label, Frame, PanedWindow 등
'공부 > python' 카테고리의 다른 글
(python) tkinter을 통한 GUI 프로그래밍3 - tkinter를 이용한 그래픽 (0) | 2020.01.08 |
---|---|
(python) tkinter을 통한 GUI 프로그래밍2 - 색상과 폰트, 레이블, 텍스트 입력 (0) | 2019.12.17 |
(python) 클래스와 객체4 - 관련예제들3 (0) | 2019.12.15 |
(python) 클래스와 객체3 - 정적 변수, 특수 메소드, 벡터/복소수 덧셈과 뺄셈,(번외. 파이썬에서의 변수의 종류) (0) | 2019.12.15 |
(python) 클래스와 객체2 - 관련예제들2 (0) | 2019.12.15 |