맨위로가기

Tkinter

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Tkinter는 파이썬 인터프리터에 포함된 Tcl 인터프리터의 파이썬 래퍼로, 파이썬과 Tcl을 단일 응용 프로그램에서 혼합하여 사용할 수 있게 해주는 GUI 라이브러리이다. Tkinter는 윈도우, 최상위 윈도우, 위젯, 프레임, 자식, 부모 등의 용어를 사용하며, 프레임, 버튼, 텍스트 위젯 등 다양한 위젯을 제공한다. Tkinter를 사용한 최소형 애플리케이션 예제와 객체 지향 프로그래밍을 사용한 예제를 통해 위젯 생성, 설정, 배치, 바인딩 과정을 보여준다.

더 읽어볼만한 페이지

  • 파이썬 라이브러리 - SciPy
    SciPy는 NumPy 배열 구조를 기반으로 수치 적분, 선형 대수, 최적화, 통계 등 과학 및 공학 계산에 사용되는 다양한 기능을 제공하는 파이썬 과학 컴퓨팅 라이브러리이다.
  • 파이썬 라이브러리 - NumPy
    NumPy는 파이썬에서 다차원 배열을 효과적으로 다루기 위한 라이브러리로, C API를 제공하여 외부 라이브러리와 연동을 지원하며, 다양한 연산 기능과 멀티스레딩을 통한 성능 향상을 제공한다.
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