Tkinter
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Tkinter는 파이썬 인터프리터에 포함된 Tcl 인터프리터의 파이썬 래퍼로, 파이썬과 Tcl을 단일 응용 프로그램에서 혼합하여 사용할 수 있게 해주는 GUI 라이브러리이다. Tkinter는 윈도우, 최상위 윈도우, 위젯, 프레임, 자식, 부모 등의 용어를 사용하며, 프레임, 버튼, 텍스트 위젯 등 다양한 위젯을 제공한다. Tkinter를 사용한 최소형 애플리케이션 예제와 객체 지향 프로그래밍을 사용한 예제를 통해 위젯 생성, 설정, 배치, 바인딩 과정을 보여준다.
더 읽어볼만한 페이지
| Tkinter - [IT 관련 정보]에 관한 문서 | |
|---|---|
| Tkinter | |
| 상세 정보 | |
2. 설명
Tkinter는 대부분의 다른 최신 Tk 바인딩과 마찬가지로 파이썬 언어 해석에 내장된 완전한 Tcl 인터프리터를 감싸는 파이썬 래퍼로 구현된다. Tkinter 호출은 Tcl 명령어로 변환되어 이 내장 인터프리터에 제공되므로, 단일 애플리케이션에서 파이썬과 Tcl을 혼합할 수 있다.
2. 1. 대안 GUI 라이브러리
Kivy, Pygame, Pyglet, PyGObject, PyQt, PySide, wxPython 등 여러 가지 널리 사용되는 GUI 라이브러리 대안이 있다.2. 2. 용어 정의
Tkinter는 사용자 인터페이스를 만드는 데 사용되는 도구 모음이다. 여기에는 여러 가지 용어가 사용된다.- 윈도우(Window): 일반적으로 사용자 화면에 나타나는 직사각형 영역을 의미한다.
- 최상위 윈도우(Top-level window): 주 창의 자식 역할을 하며, 데스크톱 관리자의 표준 프레임과 컨트롤로 장식된다. 바탕화면에서 이동하거나 크기를 조절할 수 있다.
- 위젯(Widget): 그래픽 사용자 인터페이스(GUI) 응용 프로그램을 구성하는 모든 구성 요소를 가리키는 일반적인 용어이다.
- 핵심 위젯:
- 컨테이너: 프레임, 레이블프레임, 최상위, 분할 창
- 버튼: 버튼, 라디오 버튼, 체크 버튼(체크 박스), 메뉴 버튼
- 텍스트 위젯: 레이블, 메시지, 텍스트
- 입력 위젯: 스케일, 스크롤바, 리스트 박스, 슬라이더, 스핀 박스, 엔트리(단일 라인), 옵션 메뉴, 텍스트(다중 라인), 캔버스(벡터 및 픽셀 그래픽)
- Tkinter는 팝업 대화 상자를 표시하는 세 가지 모듈을 제공한다.
- tk.messagebox: 확인, 정보, 경고 및 오류 대화 상자
- tk.filedialog: 단일 파일, 다중 파일 및 디렉토리 선택 대화 상자
- tk.colorchooser: 색상 선택기
- Python 2.7 및 Python 3.1은 Tk 8.5의 "테마 Tk"("ttk") 기능을 통합했다. 이는 Tk 위젯에 테마를 적용하여 Tk(및 Tkinter)가 실행 중인 환경처럼 보이게 하여 Tkinter에 대한 오랜 비판을 해결하는 데 도움을 준다. 콤보 박스, 진행률 표시줄, 트리뷰, 노트북, 구분 기호 및 크기 조정 그립과 같은 일부 위젯은 ttk 전용이다.
- 프레임(Frame): Tkinter에서 프레임 위젯은 복잡한 레이아웃을 구성하는 기본 요소이다. 다른 위젯을 포함할 수 있는 사각형 영역이다.
- 자식(Child)과 부모(Parent): 위젯이 생성될 때 부모-자식 관계가 만들어진다. 예를 들어 텍스트 레이블을 프레임 안에 배치하면 프레임은 레이블의 부모가 된다.
2. 2. 1. 윈도우(Window)
이 용어는 문맥에 따라 다른 의미를 가지지만, 일반적으로 사용자의 디스플레이 화면 어딘가에 있는 직사각형 영역을 의미한다.2. 2. 2. 최상위 윈도우(Top-level window)
주 창의 자식 역할을 하는 창이다. 데스크톱 관리자를 위한 표준 프레임과 컨트롤로 장식된다. 데스크톱에서 이동할 수 있으며 일반적으로 크기를 조절할 수 있다.2. 2. 3. 위젯(Widget)
위젯은 그래픽 사용자 인터페이스(GUI) 응용 프로그램을 구성하는 모든 구성 요소에 대한 일반적인 용어이다.- 핵심 위젯
- 컨테이너: 프레임, 레이블프레임, 최상위, 분할 창
- 버튼: 버튼, 라디오 버튼, 체크 버튼(체크 박스), 메뉴 버튼
- 텍스트 위젯: 레이블, 메시지, 텍스트
- 입력 위젯: 스케일, 스크롤바, 리스트 박스, 슬라이더, 스핀 박스, 엔트리(단일 라인), 옵션 메뉴, 텍스트(다중 라인) 및 캔버스(벡터 및 픽셀 그래픽)
- Tkinter는 팝업 대화 상자를 표시할 수 있는 세 가지 모듈을 제공한다.
- tk.messagebox (확인, 정보, 경고 및 오류 대화 상자)
- tk.filedialog (단일 파일, 다중 파일 및 디렉토리 선택 대화 상자)
- tk.colorchooser (색상 선택기)
- Python 2.7 및 Python 3.1은 Tk 8.5의 "테마 Tk"("ttk") 기능을 통합했다. 이는 Tk 위젯을 응용 프로그램이 실행 중인 네이티브 데스크톱 환경처럼 보이도록 쉽게 테마를 적용하여 Tk(및 Tkinter)에 대한 오랜 비판을 해결할 수 있도록 돕는다. 콤보 박스, 진행률 표시줄, 트리뷰, 노트북, 구분 기호 및 크기 조정 그립과 같은 일부 위젯은 ttk 전용이다.
2. 2. 4. 프레임(Frame)
Tkinter에서 프레임(Frame) 위젯은 복잡한 레이아웃을 위한 기본적인 구성 요소이다. 프레임은 다른 위젯을 포함할 수 있는 사각형 영역이다.2. 2. 5. 자식(Child)과 부모(Parent)
위젯이 생성될 때마다 부모-자식 관계가 생성된다. 예를 들어, 텍스트 레이블을 프레임 안에 배치하면 프레임이 레이블의 부모가 된다.3. Tkinter 애플리케이션 예제
Tkinter를 사용한 가장 간단한 예제는 다음과 같다.[9]
```python
#!/usr/bin/env python3
from tkinter import *
root = Tk() # 루트(기본) 창 생성
w = Label(root, text="Hello, world!") # 텍스트가 있는 라벨 생성
w.pack() # 라벨을 창에 배치
root.mainloop() # 이벤트 루프 시작
```
파이썬 2에서는 import 명령에서 "tkinter"의 첫 글자를 대문자 "Tkinter"로 써야 한다.[10]
3. 1. 최소형 애플리케이션
다음은 위젯 하나를 가진 최소한의 파이썬 3 Tkinter 응용 프로그램이다:[9]```python
#!/usr/bin/env python3
from tkinter import *
root = Tk() # 루트(기본) 창 생성
w = Label(root, text="Hello, world!") # 텍스트가 있는 라벨 생성
w.pack() # 라벨을 창에 배치
root.mainloop() # 이벤트 루프 시작
```
파이썬 2의 경우, 유일한 차이점은 import 명령의 "tkinter" 단어가 "Tkinter"로 대문자화된다는 것이다.[10]
3. 2. 위젯 생성 및 배치
위젯을 만드는 데는 네 단계가 있다.[11]- 생성: 프레임 내에서 생성한다.
- 설정: 위젯의 속성을 변경한다.
- 배치: 표시되도록 위치에 배치한다. 개발자는 `.grid()` (`row='int', column='int'`로 위젯의 행과 열을 정의하여 배치, 기본값 0) 및 `.place()` (`relx='int 또는 십진수', rely='int 또는 십진수'`로 프레임 또는 창에서 좌표를 정의)를 사용할 수 있다.
- 바인딩: 함수 또는 이벤트에 바인딩한다.
이들은 종종 압축되며 순서는 달라질 수 있다.
3. 3. 객체 지향 프로그래밍을 사용한 간단한 애플리케이션
파이썬에서 객체 지향 프로그래밍 패러다임을 사용하여 간단한 프로그램을 작성할 수 있다(Tcl 버전 8.6이 필요하며, MacOS의 파이썬에서는 기본적으로 사용되지 않는다).[12]```python
#!/usr/bin/env python3
import tkinter as tk
class Application(tk.Frame):
def __init__(self, root=None):
tk.Frame.__init__(self, root)
self.grid()
self.createWidgets()
def createWidgets(self):
self.medialLabel = tk.Label(self, text='Hello World')
self.medialLabel.config(bg="#00ffff")
self.medialLabel.grid()
self.quitButton = tk.Button(self, text='Quit', command=self.quit)
self.quitButton.grid()
app = Application()
app.root = tk.Tk()
app.root.title('Sample application')
app.mainloop()
```
- 1행: 해시뱅 인터프리터 지시어로, 프로그램을 자체 실행할 때 적절한 인터프리터 실행 파일을 선택할 수 있도록 한다.
- 2행: tkinter 모듈을 프로그램의 네임스페이스로 가져오지만, tk로 이름을 변경한다.
- 5행: 응용 프로그램 클래스는 Tkinter의 Frame 클래스를 상속한다.
- 7행: Frame을 설정하는 함수를 정의한다.
- 8행: 상위 클래스인 Frame의 생성자를 호출한다.
- 12행: 위젯을 정의한다.
- 13행: "Hello World" 텍스트가 있는 MedialLabel이라는 레이블을 만든다.
- 14행: MedialLabel 배경색을 시안색으로 설정한다.
- 15행: grid 기하학 관리자 메서드를 사용하여 레이블을 응용 프로그램에 배치하여 표시한다.
- 16행: "Quit" 레이블이 있는 버튼을 만든다.
- 17행: 버튼을 응용 프로그램에 배치한다. Grid, place, pack은 모두 위젯을 표시하는 메서드이다.
- 20행: 메인 프로그램은 Application 클래스를 인스턴스화하여 여기에서 시작된다.
- 21행: 메인 윈도우 app.root를 Tk 객체로 만든다.
- 22행: 이 메서드 호출은 창의 제목을 "Sample application"으로 설정한다.
- 23행: 응용 프로그램의 메인 루프를 시작하여 마우스 및 키보드 이벤트를 대기한다.
참조
[1]
웹사이트
Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation
https://docs.python.[...]
2009-03-12
[2]
웹사이트
Tkinter - Pythoninfo Wiki
https://wiki.python.[...]
[3]
문서
tkinter—Python interface to Tcl/Tk—Python 3.9.10 Documentation
https://docs.python.[...]
[4]
문서
Tkinter reference: a GUI for Python
https://tkdocs.com/s[...]
New Mexico Tech Computer Center
2010-12-12
[5]
웹사이트
Tkinter - Tkinter Wiki
http://tkinter.unpyt[...]
2013-11-13
[6]
웹사이트
Python issue #2983, "Ttk support for Tkinter"
http://bugs.python.o[...]
[7]
웹사이트
Python subversion revision 69051, which resolves issue #2983 by adding the ttk module
http://svn.python.or[...]
[8]
웹사이트
Tkinter ttk widgets - Python Tutorial
https://coderslegacy[...]
2022-01-13
[9]
웹사이트
Tkinter 8.5 reference: a GUI for Python
https://tkdocs.com/s[...]
[10]
웹사이트
Tkinter – GUIs in Python
https://cs.gmu.edu/~[...]
George Mason University
2018-08-18
[11]
웹사이트
GUI Programming with Python: Events and Binds
https://www.python-c[...]
2018-08-18
[12]
웹사이트
PEP 397 — Python launcher for Windows — Python.org
https://www.python.o[...]
2017-06-07
[13]
문서
3. Using Python on Windows — Python 3.3.7 documentation
https://docs.python.[...]
[14]
문서
java
https://docs.oracle.[...]
ORACLE
[15]
웹인용
Tkinter — Python interface to Tcl/Tk — Python v2.6.1 documentation
https://docs.python.[...]
2009-03-12
[16]
웹인용
Tkinter - Pythoninfo Wiki
https://wiki.python.[...]
[17]
인용
tkinter—Python interface to Tcl/Tk—Python 3.9.10 Documentation
https://docs.python.[...]
[18]
인용
Tkinter reference: a GUI for Python
https://tkdocs.com/s[...]
New Mexico Tech Computer Center
2010-12-12
[19]
웹인용
Tkinter - Tkinter Wiki
http://tkinter.unpyt[...]
2013-11-13
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com