"tkinter.ttk" --- Tk 테마 위젯
******************************

**소스 코드:** Lib/tkinter/ttk.py

======================================================================

"tkinter.ttk" 모듈은 Tk 8.5에 도입된 Tk 테마 위젯 집합에 대한 액세스를
제공합니다. X11에서 안티 에일리어싱 된 글꼴 렌더링과 창 투명도(X11에서
컴포지션 창 관리자가 필요합니다)를 포함한 추가 이점을 제공합니다.

"tkinter.ttk"의 기본 아이디어는 위젯 동작을 구현하는 코드와 모양을 구
현하는 코드를 가능한 한 분리하는 것입니다.

더 보기:

  Tk 위젯 스타일링 지원
     Tk의 테마 지원을 소개하는 문서


Ttk 사용하기
============

Ttk를 사용하려면, 모듈을 임포트 하십시오:

   from tkinter import ttk

기본 Tk 위젯을 재정의하려면, 임포트는 Tk 임포트 뒤에 와야 합니다:

   from tkinter import *
   from tkinter.ttk import *

이 코드로 인해 여러 "tkinter.ttk" 위젯("Button", "Checkbutton",
"Entry", "Frame", "Label", "LabelFrame", "Menubutton", "PanedWindow",
"Radiobutton", "Scale" 및 "Scrollbar")이 Tk 위젯을 자동으로 대체합니다
.

이것은 여러 플랫폼에서 더 나은 모양과 느낌을 제공하는 새로운 위젯을 사
용하는 직접적인 이점이 있지만, 대체된 위젯은 완전히 호환되지 않습니다.
주요 차이점은 "fg", "bg" 및 위젯 스타일과 관련된 다른 위젯 옵션이 더는
Ttk 위젯에 존재하지 않는다는 것입니다. 대신, 스타일링 효과를 개선하려
면 "ttk.Style" 클래스를 사용하십시오.

더 보기:

  Tile 위젯을 사용하도록 기존 응용 프로그램을 변환하기
     새 위젯을 사용하도록 응용 프로그램을 바꿀 때 일반적으로 발생하는
     차이점에 대한 모노그래프 (Tcl 용어로).


Ttk 위젯
========

Ttk에는 18개의 위젯이 있으며, 그중 12개는 tkinter에 이미 존재합니다:
"Button", "Checkbutton", "Entry", "Frame", "Label", "LabelFrame",
"Menubutton", "PanedWindow", "Radiobutton", "Scale", "Scrollbar" 및
"Spinbox". 다른 6개는 "Combobox", "Notebook", "Progressbar",
"Separator", "Sizegrip" 및 "Treeview"입니다. 그리고 이들은 모두
"Widget"의 서브 클래스입니다.

Ttk 위젯을 사용하면 응용 프로그램의 모양과 느낌이 개선됩니다. 위에서
설명한 것처럼, 스타일을 코딩하는 방법에는 차이가 있습니다.

Tk 코드:

   l1 = tkinter.Label(text="Test", fg="black", bg="white")
   l2 = tkinter.Label(text="Test", fg="black", bg="white")

Ttk 코드:

   style = ttk.Style()
   style.configure("BW.TLabel", foreground="black", background="white")

   l1 = ttk.Label(text="Test", style="BW.TLabel")
   l2 = ttk.Label(text="Test", style="BW.TLabel")

Ttk 스타일링에 대한 자세한 정보는, "Style" 클래스 설명서를 참조하십시
오.


Widget
======

"ttk.Widget"은 Tk 테마 위젯이 지원하는 표준 옵션과 메서드를 정의하며
직접 인스턴스 화하지 않습니다.


표준 옵션
---------

모든 "ttk" 위젯은 다음 옵션을 받아들입니다:

+-------------+----------------------------------------------------------------+
| 옵션        | 설명                                                           |
|=============|================================================================|
| class       | 윈도우 클래스를 지정합니다. 이 클래스는 창의 다른 옵션에 대한  |
|             | 옵션 데 이터베이스를 조회하고, 창의 기본 바인딩 태그를 결정하  |
|             | 고, 위젯의 기본 레이아웃과 스타일을 선택하는 데 사용됩니다. 이 |
|             | 옵션은 읽기 전용이며, 창을 만들 때만 지정할 수 있습니다.       |
+-------------+----------------------------------------------------------------+
| cursor      | 위젯에 사용될 마우스 커서를 지정합니다. 빈 문자열(기본값)로 설 |
|             | 정하면, 커서가 부모 위젯에서 상속됩니다.                       |
+-------------+----------------------------------------------------------------+
| takefocus   | 키보드 순회 중 창에서 포커스를 받아들일지를 결정합니다. 0, 1   |
|             | 또는 빈 문자열이 반환됩니다. 0이 반환되면, 키보드 순회 중에 창 |
|             | 을 완전히 건너뛰 어야 한다는 의미입니다. 1이면, 창은 볼 수 있  |
|             | 는 한 입력 포커스를 받아야 함을 의미합니다. 빈 문자열은 순회   |
|             | 스크립트가 창에 포커스를 맞출지를 결 정함을 의미합니다.        |
+-------------+----------------------------------------------------------------+
| style       | 사용자 정의 위젯 스타일을 지정하는 데 사용될 수 있습니다.      |
+-------------+----------------------------------------------------------------+


스크롤 가능한 위젯 옵션
-----------------------

다음 옵션은 스크롤 막대로 제어되는 위젯에서 지원됩니다.

+------------------+-----------------------------------------------------------+
| 옵션             | 설명                                                      |
|==================|===========================================================|
| xscrollcommand   | 가로 스크롤 막대와 통신하는 데 사용됩니다.  위젯 창에 있  |
|                  | 는 뷰가 변경될 때, 위젯은 scrollcommand를 기반한 Tcl 명령 |
|                  | 을 생성합니다.  일반적으로 이 옵션은 어떤 스크롤 막대의   |
|                  | 메서드 "Scrollbar.set()"으로 구성됩니다. 그러면 창의 뷰가 |
|                  | 변경될 때마다 스크롤 막대가 갱신됩니다.                   |
+------------------+-----------------------------------------------------------+
| yscrollcommand   | 세로 스크롤 막대와 통신하는 데 사용됩니다. 자세한 내용은  |
|                  | 위를 참조하십 시오.                                       |
+------------------+-----------------------------------------------------------+


레이블 옵션
-----------

다음 옵션은 레이블, 버튼 및 기타 버튼류 위젯에서 지원됩니다.

+----------------+-------------------------------------------------------------+
| 옵션           | 설명                                                        |
|================|=============================================================|
| text           | 위젯 안에 표시할 텍스트 문자열을 지정합니다.                |
+----------------+-------------------------------------------------------------+
| textvariable   | text 옵션 자원 대신 그 값이 사용될 이름을 지정합니다.       |
+----------------+-------------------------------------------------------------+
| underline      | 설정되면, 텍스트 문자열에서 밑줄 그을 문자의 인덱스(0에서   |
|                | 시작)를 지정 합니다. 밑줄 있는 문자는 니모닉 활성화         |
|                | (mnemonic activation)에 사용됩니 다.                        |
+----------------+-------------------------------------------------------------+
| image          | 표시할 이미지를 지정합니다. 이것은 하나 이상의 요소로 구성  |
|                | 된 리스트입 니다. 첫 번째 요소는 기본 이미지 이름입니다. 리 |
|                | 스트의 나머지가 "Style.map()"에 의해 정의된 대로            |
|                | statespec/value 쌍의 시퀀스면, 위젯이 특정 상태나 상태의 조 |
|                | 합에 있을 때 사용할 다른 이미지를 지정합니다. 리 스트의 모  |
|                | 든 이미지는 크기가 같아야 합니다.                           |
+----------------+-------------------------------------------------------------+
| compound       | 텍스트와 이미지 옵션이 모두 있을 때, 텍스트를 기준으로 이미 |
|                | 지를 표시하 는 방법을 지정합니다. 유효한 값은 다음과 같습니 |
|                | 다:  * text: 텍스트만 표시합니다  * image: 이미지만 표시합  |
|                | 니다  * top, bottom, left, right: 각각 이미지를 텍스트 위,  |
|                | 아래, 왼쪽 또는 오른쪽에 표시합니다.  * none: 기본값입니다. |
|                | 있으면 이미지를 표시하고, 그렇지 않으면 텍스트를 표시합니다 |
|                | .                                                           |
+----------------+-------------------------------------------------------------+
| width          | 0보다 크면, 문자 너비 단위로, 텍스트 레이블에 할당할 공간의 |
|                | 크기를 지 정합니다, 0보다 작으면, 최소 너비를 지정합니다. 0 |
|                | 으로 지정하거나 지정 하지 않으면, 텍스트 레이블의 자연 너비 |
|                | 가 사용됩니다.                                              |
+----------------+-------------------------------------------------------------+


호환성 옵션
-----------

+----------+------------------------------------------------------------------+
| 옵션     | 설명                                                             |
|==========|==================================================================|
| state    | "disabled" 상태 비트를 제어하기 위해 "normal"이나 "disabled"로   |
|          | 설정될 수 있습니다. 이것은 쓰기 전용 옵션입니다: 이를 설정하면   |
|          | 위젯 상태가 변 경되지만, "Widget.state()" 메서드는 이 옵션에 영  |
|          | 향을 미치지 않습니다.                                            |
+----------+------------------------------------------------------------------+


위젯 상태
---------

위젯 상태는 독립 상태 플래그의 비트 맵입니다.

+--------------+---------------------------------------------------------------+
| 플래그       | 설명                                                          |
|==============|===============================================================|
| active       | 마우스 커서가 위젯 위에 있으며 마우스 버튼을 누르면 어떤 동작 |
|              | 을 일으킵 니다                                                |
+--------------+---------------------------------------------------------------+
| disabled     | 프로그램 제어 하에 위젯이 비활성화되었습니다                  |
+--------------+---------------------------------------------------------------+
| focus        | 위젯에 키보드 포커스가 있습니다                               |
+--------------+---------------------------------------------------------------+
| pressed      | 위젯을 누르고 있습니다                                        |
+--------------+---------------------------------------------------------------+
| selected     | 체크 버튼과 라디오 버튼과 같은 항목의 경우 "On", "true" 또는  |
|              | "current"                                                     |
+--------------+---------------------------------------------------------------+
| background   | 윈도우와 맥에는 "활성(active)"이나 전경(foreground) 창이라는  |
|              | 개념이 있 습니다. *background* 상태는 배경 창의 위젯에 대해   |
|              | 설정되고, 전경 창의 위젯에서는 지워집니다.                    |
+--------------+---------------------------------------------------------------+
| readonly     | 위젯이 사용자 수정을 허용하지 않습니다                        |
+--------------+---------------------------------------------------------------+
| alternate    | 위젯 별 대체 디스플레이 포맷                                  |
+--------------+---------------------------------------------------------------+
| invalid      | 위젯 값이 유효하지 않습니다                                   |
+--------------+---------------------------------------------------------------+

상태 명세는 상태 이름의 시퀀스이며, 선택적으로 비트가 꺼져 있음을 나타
내는 느낌표가 접두어로 붙습니다.


ttk.Widget
----------

아래 설명된 메서드 외에도 "ttk.Widget"은 메서드
"tkinter.Widget.cget()"과 "tkinter.Widget.configure()"를 지원합니다.

class tkinter.ttk.Widget

   identify(x, y)

      위치 *x* *y*에 있는 요소의 이름을 반환하거나, 점이 요소 내에 없
      으면 빈 문자열을 반환합니다.

      *x* 와 *y*는 위젯에 상대적인 픽셀 좌표입니다.

   instate(statespec, callback=None, *args, **kw)

      위젯 상태를 테스트합니다. 콜백을 지정하지 않으면, 위젯 상태가
      *statespec*과 일치하면 "True"를, 그렇지 않으면 "False"를 반환합
      니다. 콜백이 지정되면 위젯 상태가 *statespec*과 일치하면 args로
      호출됩니다.

   state(statespec=None)

      위젯 상태를 수정하거나 요청합니다. *statespec*이 지정되면, 그에
      따라 위젯 상태를 설정하고 변경된 플래그를 나타내는 새
      *statespec*을 반환합니다. *statespec*을 지정하지 않으면, 현재 활
      성화된 상태 플래그를 반환합니다.

   *statespec*은 일반적으로 리스트나 튜플입니다.


Combobox
========

"ttk.Combobox" 위젯은 텍스트 필드를 값의 팝-다운(pop-down) 리스트와 결
합합니다. 이 위젯은 "Entry"의 서브 클래스입니다.

"Widget"에서 상속된 메서드 "Widget.cget()", "Widget.configure()",
"Widget.identify()", "Widget.instate()" 및 "Widget.state()"와, "Entry"
에서 상속된 메서드 "Entry.bbox()", "Entry.delete()",
"Entry.icursor()", "Entry.index()", "Entry.insert()",
"Entry.selection()", "Entry.xview()" 외에, "ttk.Combobox"에 설명된 다
른 메서드가 있습니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+-------------------+----------------------------------------------------------+
| 옵션              | 설명                                                     |
|===================|==========================================================|
| exportselection   | 불리언 값. 설정되면, 위젯 선택은 창 관리자 선택에 연결됩 |
|                   | 니다 (예를 들 어, Misc.selection_get 을 호출하여 반환할  |
|                   | 수 있습니다).                                            |
+-------------------+----------------------------------------------------------+
| justify           | 위젯 내에서 텍스트가 정렬되는 방식을 지정합니다. "left", |
|                   | "center" 또는 "right" 중 하나입니다.                     |
+-------------------+----------------------------------------------------------+
| height            | 팝-다운 목록 상자의 높이를 행 단위로 지정합니다.         |
+-------------------+----------------------------------------------------------+
| postcommand       | 값을 표시하기 직전에 호출되는 (Misc.register로 등록할 수 |
|                   | 있는) 스크립 트. 표시할 값을 지정할 수 있습니다.         |
+-------------------+----------------------------------------------------------+
| state             | "normal", "readonly" 또는 "disabled" 중 하나. "readonly" |
|                   | 상태에서는, 값을 직접 편집할 수 없고, 사용자는 드롭다운  |
|                   | 목록에서 값을 선택할 수만 있습니다. "normal" 상태에서는, |
|                   | 텍스트 필드를 직접 편집할 수 있습니다. "disabled" 상태에 |
|                   | 서는, 상호 작용이 불가능합니다.                          |
+-------------------+----------------------------------------------------------+
| textvariable      | 값이 위젯 값에 연결된 이름을 지정합니다. 해당 이름과 관  |
|                   | 련된 값이 변경 될 때마다, 위젯 값이 갱신되고, 그 반대도  |
|                   | 마찬가지입니다. "tkinter.StringVar"를 참조하십시오.      |
+-------------------+----------------------------------------------------------+
| values            | 드롭-다운 목록 상자에 표시할 값의 리스트를 지정합니다.   |
+-------------------+----------------------------------------------------------+
| width             | 원하는 입력 창의 너비를 나타내는 정숫값을 위젯 글꼴의 평 |
|                   | 균 크기 문자 단위로 지정합니다.                          |
+-------------------+----------------------------------------------------------+


가상 이벤트
-----------

콤보 박스 위젯은 사용자가 값 목록에서 요소를 선택할 때
**<<ComboboxSelected>>** 가상 이벤트를 생성합니다.


ttk.Combobox
------------

class tkinter.ttk.Combobox

   current(newindex=None)

      *newindex*를 지정하면, 콤보 박스 값을 요소 위치 *newindex*로 설
      정합니다. 그렇지 않으면, 현재 값의 인덱스를 반환하거나 현재 값이
      값 목록에 없으면 -1을 반환합니다.

   get()

      콤보 박스의 현재 값을 반환합니다.

   set(value)

      콤보 박스의 값을 *value*로 설정합니다.


Spinbox
=======

"ttk.Spinbox" 위젯은 증가와 감소 화살표로 개선된 "ttk.Entry"입니다. 숫
자나 문자열 값의 리스트에 사용할 수 있습니다. 이 위젯은 "Entry"의 서브
클래스입니다.

"Widget"에서 상속된 메서드 "Widget.cget()", "Widget.configure()",
"Widget.identify()", "Widget.instate()" 및 "Widget.state()"와, "Entry"
에서 상속된 메서드 "Entry.bbox()", "Entry.delete()",
"Entry.icursor()", "Entry.index()", "Entry.insert()", "Entry.xview()"
외에도, "ttk.Spinbox"에 설명된 다른 메서드가 있습니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+------------------------+--------------------------------------------------------+
| 옵션                   | 설명                                                   |
|========================|========================================================|
| from                   | 부동 소수점 값. 설정하면, 감소 버튼이 감소할 최솟값입  |
|                        | 니다. "from"은 파 이썬 키워드이므로, 인자로 사용될 때  |
|                        | "from_"을 사용해야 합니다.                             |
+------------------------+--------------------------------------------------------+
| to                     | 부동 소수점 값. 설정되면, 증가 버튼이 증가할 최댓값입  |
|                        | 니다.                                                  |
+------------------------+--------------------------------------------------------+
| increment              | 부동 소수점 값. 증가/감소 버튼이 값을 변경할 양을 지정 |
|                        | 합니다. 기본값은 1.0입니다.                            |
+------------------------+--------------------------------------------------------+
| values                 | 문자열이나 부동 소수점 값의 시퀀스. 지정되면, 증가/감  |
|                        | 소 버튼은 숫자를 늘리거나 줄이는 것이 아니라, 이 시퀀  |
|                        | 스에서 항목을 순환합니다.                              |
+------------------------+--------------------------------------------------------+
| wrap                   | 불리언 값. "True"이면, 증가와 감소 버튼이 각각 "to" 값 |
|                        | 에서 "from" 값으 로, "from" 값에서 "to" 값으로 순환합  |
|                        | 니다.                                                  |
+------------------------+--------------------------------------------------------+
| format                 | 문자열 값. 증가/감소 버튼으로 설정된 숫자의 포맷을 지  |
|                        | 정합니다. "%W.Pf" 형식이어야 합니다, 여기서 W는 값의   |
|                        | 패딩 된 너비, P는 정밀도, 그리고 '%'와 'f'는 리터럴 입 |
|                        | 니다.                                                  |
+------------------------+--------------------------------------------------------+
| command                | 파이썬 콜러블. 증가나 감소 버튼 중 하나를 누를 때마다  |
|                        | 인자 없이 호출됩 니다.                                 |
+------------------------+--------------------------------------------------------+


가상 이벤트
-----------

스핀 박스 위젯은 사용자가 <Up>을 누를 때 **<<Increment>>** 가상 이벤트
를, 사용자가 <Down>을 누를 때 **<<Decrement>>** 가상 이벤트를 생성합니
다.


ttk.Spinbox
-----------

class tkinter.ttk.Spinbox

   get()

      스핀 박스의 현재 값을 반환합니다.

   set(value)

      스핀 박스의 값을 *value*로 설정합니다.


Notebook
========

Ttk Notebook 위젯은 창 모음을 관리하고 한 번에 하나의 창을 표시합니다.
각 자식 창은 사용자가 현재 표시된 창을 변경하도록 선택할 수 있는 탭과
연결되어 있습니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+-----------+------------------------------------------------------------------+
| 옵션      | 설명                                                             |
|===========|==================================================================|
| height    | 존재하고 0보다 크면, 팬 영역(pane area)의 원하는 높이를 지정합니 |
|           | 다 (내 부 패딩이나 탭을 포함하지 않습니다). 그렇지 않으면, 모든  |
|           | 팬의 최대 높 이가 사용됩니다.                                    |
+-----------+------------------------------------------------------------------+
| padding   | 노트북 외부에 추가할 여분의 공간을 지정합니다. 패딩은 좌(left)   |
|           | 상(top) 우(right) 하(bottom) 최대 4개의 길이 명세 리스트입니다.  |
|           | 4개보다 적은 요소가 지정되면, bottom의 기본값은 top, right의 기  |
|           | 본값은 left, top의 기본값은 left입니다.                          |
+-----------+------------------------------------------------------------------+
| width     | 존재하고 0보다 크면, 원하는 팬 영역 너비를 지정합니다 (내부 패딩 |
|           | 을 포 함하지 않습니다). 그렇지 않으면, 모든 팬의 최대 너비가 사  |
|           | 용됩니다.                                                        |
+-----------+------------------------------------------------------------------+


탭 옵션
-------

탭에 대한 특정 옵션도 있습니다:

+-------------+----------------------------------------------------------------+
| 옵션        | 설명                                                           |
|=============|================================================================|
| state       | "normal", "disabled" 또는 "hidden". "disabled" 이면, 탭을 선택 |
|             | 할 수 없 습니다. "hidden" 이면, 탭이 표시되지 않습니다.        |
+-------------+----------------------------------------------------------------+
| sticky      | 자식 창이 창 영역 내에서 배치되는 방법을 지정합니다. 값은 0개  |
|             | 이상의 문자 "n", "s", "e" 또는 "w"를 포함하는 문자열입니다. 각 |
|             | 문자는 "grid()" 지오메트리 관리자에 따라, 자식 창이 붙을 변(북 |
|             | (north), 남 (south), 동(east) 또는 서(west))을 나타냅니다.     |
+-------------+----------------------------------------------------------------+
| padding     | 노트북과 이 팬 사이에 추가할 여분의 공간을 지정합니다. 문법은  |
|             | 이 위젯 에서 사용하는 옵션 padding과 같습니다.                 |
+-------------+----------------------------------------------------------------+
| text        | 탭에 표시할 텍스트를 지정합니다.                               |
+-------------+----------------------------------------------------------------+
| image       | 탭에 표시할 이미지를 지정합니다. "Widget"에 설명된 옵션 image  |
|             | 를 참조하 십시오.                                              |
+-------------+----------------------------------------------------------------+
| compound    | 옵션 text와 image가 모두 있을 때, 텍스트에 상대적으로 이미지를 |
|             | 표시하 는 방법을 지정합니다. 유효한 값은 레이블 옵션을 참조하  |
|             | 십시오.                                                        |
+-------------+----------------------------------------------------------------+
| underline   | 텍스트 문자열에서 밑줄 그을 문자의 인덱스(0에서 시작)를 지정합 |
|             | 니다. "Notebook.enable_traversal()"이 호출되면 밑줄 있는 문자  |
|             | 는 니모닉 활성 화(mnemonic activation)에 사용됩니다.           |
+-------------+----------------------------------------------------------------+


탭 식별자
---------

"ttk.Notebook"의 여러 가지 메서드에 존재하는 tab_id는 다음 형식 중 하
나를 취할 수 있습니다:

* 0과 탭 수 사이의 정수

* 자식 창의 이름

* 탭을 식별하는 "@x,y" 형식의 위치 명세

* 현재 선택된 탭을 식별하는 리터럴 문자열 "current"

* 탭 수를 반환하는 리터럴 문자열 "end" ("Notebook.index()"에만 유효합
  니다)


가상 이벤트
-----------

이 위젯은 새 탭을 선택한 후 **<<NotebookTabChanged>>** 가상 이벤트를
생성합니다.


ttk.Notebook
------------

class tkinter.ttk.Notebook

   add(child, **kw)

      노트북에 새 탭을 추가합니다.

      창이 현재 노트북으로 관리되지만 숨겨져 있으면, 창은 이전 위치로
      복원됩니다.

      사용 가능한 옵션 목록은 탭 옵션을 참조하십시오.

   forget(tab_id)

      *tab_id*로 지정된 탭을 제거하고, 연관된 창을 매핑 취소하고 관리
      취소합니다.

   hide(tab_id)

      *tab_id*로 지정된 탭을 숨깁니다.

      탭은 표시되지 않지만, 관련 창은 노트북에 의해 계속 관리되고 구성
      이 기억됩니다. 숨겨진 탭은 "add()" 명령으로 복원될 수 있습니다.

   identify(x, y)

      위치 *x*, *y*의 탭 요소 이름을 반환하거나, 없으면 비어있는 문자
      열을 반환합니다.

   index(tab_id)

      *tab_id*로 지정된 탭의 숫자 인덱스를 반환하거나, *tab_id*가 문자
      열 "end"이면 총 탭 수를 반환합니다.

   insert(pos, child, **kw)

      지정된 위치에 팬(pane)을 삽입합니다.

      *pos*는 문자열 "end", 정수 인덱스 또는 관리되는 자식의 이름입니
      다. 노트북에서 *child*를 이미 관리하고 있으면, 지정된 위치로 옮
      깁니다.

      사용 가능한 옵션 목록은 탭 옵션을 참조하십시오.

   select(tab_id=None)

      지정된 *tab_id*를 선택합니다.

      연결된 자식 창이 표시되고, 이전에 선택한 창이 (다르다면) 매핑이
      취소됩니다. *tab_id*가 생략되면, 현재 선택된 팬의 위젯 이름을 반
      환합니다.

   tab(tab_id, option=None, **kw)

      특정 *tab_id*의 옵션을 조회하거나 수정합니다.

      *kw*가 제공되지 않으면, 탭 옵션값의 딕셔너리를 반환합니다.
      *option*이 지정되면, 해당 *option*의 값을 반환합니다. 그렇지 않
      으면, 옵션을 해당 값으로 설정합니다.

   tabs()

      노트북에서 관리하는 창의 리스트를 반환합니다.

   enable_traversal()

      이 노트북이 포함된 최상위 창의 키보드 순회를 활성화합니다.

      이것은 노트북을 포함하는 최상위 창에 대한 바인딩을 다음과 같이
      확장합니다:

      * "Control"-"Tab": 현재 선택된 탭 다음에 있는 탭을 선택합니다.

      * "Shift"-"Control"-"Tab": 현재 선택된 탭 앞에 있는 탭을 선택합
        니다.

      * "Alt"-"K": 여기서 *K*는 탭의 니모닉 (밑줄이 그어진) 문자이며,
        해당 탭을 선택합니다.

      중첩된 노트북을 포함하여, 단일 최상위 수준에 있는 여러 노트북의
      순회를 활성화할 수 있습니다. 그러나, 모든 팬에 마스터로 있는 노
      트북이 있을 때만 노트북 순회가 제대로 작동합니다.


Progressbar
===========

"ttk.Progressbar" 위젯은 장기 실행 작업의 상태를 보여줍니다. 두 가지
모드로 동작할 수 있습니다: 1) 수행할 총작업량을 기준으로 완료된 양을
표시하는 확정적(determinate) 모드와 2) 작업이 진행 중임을 사용자에게
알리는 애니메이션 표시를 제공하는 불확정적(indeterminate) 모드입니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+------------+-----------------------------------------------------------------+
| 옵션       | 설명                                                            |
|============|=================================================================|
| orient     | "horizontal" 또는 "vertical" 중 하나입니다. 진행 막대의 방향을  |
|            | 지정합 니다.                                                    |
+------------+-----------------------------------------------------------------+
| length     | 진행 막대의 긴 축의 길이를 지정합니다 (가로면 너비, 세로면 높이 |
|            | ).                                                              |
+------------+-----------------------------------------------------------------+
| mode       | "determinate" 또는 "indeterminate" 중 하나.                     |
+------------+-----------------------------------------------------------------+
| maximum    | 최댓값을 지정하는 숫자. 기본값은 100입니다.                     |
+------------+-----------------------------------------------------------------+
| value      | 진행 막대의 현재 값. "determinate" (확정적) 모드에서는, 완료된  |
|            | 작업량 을 나타냅니다. "indeterminate" (불확정적) 모드에서는, 모 |
|            | 듈로 *maximum* 으로 해석됩니다; 즉, 진행 막대의 값이 *maximum*  |
|            | 증가하면 하나의 "사이 클"이 완료됩니다.                         |
+------------+-----------------------------------------------------------------+
| variable   | 옵션값에 연결된 이름. 지정되면, 진행 막대의 값은 이 이름의 값이 |
|            | 수정될 때마다 이 이름의 값으로 자동 설정됩니다.                 |
+------------+-----------------------------------------------------------------+
| phase      | 읽기 전용 옵션. 위젯은 값이 0보다 크고 확정적 모드에서 최댓값보 |
|            | 다 작을 때마다 이 옵션의 값을 주기적으로 증가시킵니다. 이 옵션  |
|            | 은 현재 테마에서 추가 애니메이션 효과를 제공하는 데 사용할 수   |
|            | 있습니다.                                                       |
+------------+-----------------------------------------------------------------+


ttk.Progressbar
---------------

class tkinter.ttk.Progressbar

   start(interval=None)

      자동 증가 모드를 시작합니다: *interval* 밀리초마다
      "Progressbar.step()"을 호출하는 반복 타이머 이벤트를 예약합니다.
      생략하면, *interval*의 기본값은 50밀리초입니다.

   step(amount=None)

      진행 막대의 값을 *amount*만큼 증가시킵니다.

      생략하면 *amount*의 기본값은 1.0입니다.

   stop()

      자동 증가 모드를 중지합니다: 이 진행 막대에 대한
      "Progressbar.start()"로 시작된 반복 타이머 이벤트를 취소합니다.


Separator
=========

"ttk.Separator" 위젯은 가로나 세로 구분 막대를 표시합니다.

"ttk.Widget"에서 상속된 것 외에 다른 메서드는 없습니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+----------+------------------------------------------------------------------+
| 옵션     | 설명                                                             |
|==========|==================================================================|
| orient   | "horizontal"(가로)이나 "vertical"(세로) 중 하나입니다. 구분 막대 |
|          | 의 방 향을 지정합니다.                                           |
+----------+------------------------------------------------------------------+


Sizegrip
========

"ttk.Sizegrip" 위젯(확장 상자(grow box)라고도 합니다)을 사용하면 그립
(grip)을 누르고 드래그하여 포함하는 최상위 창의 크기를 조정할 수 있습
니다.

이 위젯에는 "ttk.Widget"에서 상속된 것 외에 특정 옵션이나 메서드가 없
습니다.


플랫폼별 노트
-------------

* 맥 OS에서, 최상위 창에는 기본적으로 내장 크기 그립이 자동으로 포함됩
  니다. 내장 그립이 위젯을 가리기 때문에 "Sizegrip"을 추가하는 것은 무
  해합니다.


버그
----

* 포함하는 최상위 수준의 위치가 화면의 오른쪽이나 아래쪽을 기준으로 지
  정되면 (예를 들어 ....), "Sizegrip" 위젯은 창의 크기를 조정하지 않습
  니다.

* 이 위젯은 "동남쪽" 크기 조정만 지원합니다.


Treeview
========

"ttk.Treeview" 위젯은 계층적 항목 컬렉션을 표시합니다. 각 항목에는 텍
스트 레이블, 선택적 이미지 및 선택적 데이터값 목록이 있습니다. 데이터
값은 트리 레이블 다음에 연속되는 열에 표시됩니다.

위젯 옵션 "displaycolumns"를 설정하여 데이터값이 표시되는 순서를 제어
할 수 있습니다. 트리 위젯은 열 제목을 표시할 수도 있습니다. 위젯 옵션
열에 나열된 숫자나 기호 이름으로 열에 액세스 할 수 있습니다. 열 식별자
를 참조하십시오.

각 항목은 고유한 이름으로 식별됩니다. 호출자가 제공하지 않으면 위젯은
항목 ID를 생성합니다. "{}"라고 이름 붙은, 구별되는 루트 항목이 있습니
다. 루트 항목 자체는 표시되지 않습니다; 이것의 자식들이 계층 구조의 최
상위 수준에 나타납니다.

각 항목에는 이벤트 바인딩을 개별 항목과 연관시키고 항목의 모양을 제어
하는 데 사용할 수 있는 태그 목록이 있습니다.

Treeview 위젯은 스크롤 가능한 위젯 옵션에 설명된 옵션과
"Treeview.xview()"와 "Treeview.yview()" 메서드에 따라 가로와 세로 스크
롤을 지원합니다.


옵션
----

이 위젯은 다음과 같은 특정 옵션을 받아들입니다:

+------------------+----------------------------------------------------------+
| 옵션             | 설명                                                     |
|==================|==========================================================|
| columns          | 열 수와 이름을 지정하는, 열 식별자 리스트.               |
+------------------+----------------------------------------------------------+
| displaycolumns   | 표시할 데이터 열과 표시되는 순서를 지정하는 열 식별자 (  |
|                  | 기호나 정수 인 덱스) 리스트, 또는 문자열 "#all".         |
+------------------+----------------------------------------------------------+
| height           | 보여야 하는 행 수를 지정합니다. 참고: 요청된 너비는 열   |
|                  | 너비의 합계로 결정됩니다.                                |
+------------------+----------------------------------------------------------+
| padding          | 위젯의 내부 패딩을 지정합니다. 패딩은 최대 4개의 길이 명 |
|                  | 세 리스트입니 다.                                        |
+------------------+----------------------------------------------------------+
| selectmode       | 내장 클래스 바인딩이 선택을 관리하는 방법을 제어합니다.  |
|                  | "extended", "browse" 또는 "none" 중 하나입니다.          |
|                  | "extended"(기본값)로 설정하면, 여 러 항목을 선택할 수 있 |
|                  | 습니다. "browse"이면, 한 번에 하나의 항목 만 선 택됩니다 |
|                  | . "none"이면 선택이 변경되지 않습니다.  이 옵션의 값과   |
|                  | 관계없이, 응용 프로그램 코드와 태그 바인딩은 원하는 대   |
|                  | 로 선택을 설정할 수 있음에 유의하십시오.                 |
+------------------+----------------------------------------------------------+
| show             | 표시할 트리의 요소를 지정하는, 다음 값 중 0개 이상을 포  |
|                  | 함하는 리스트.  * tree: 열 #0에 트리 레이블을 표시합니다 |
|                  | .  * headings: 제목 행을 표시합니다.  기본값은 "tree     |
|                  | headings" 입니다, 즉, 모든 요소를 표시합니다.  **참고**: |
|                  | show="tree" 가 지정되지 않은 경우에도, #0 열은 항상 트리 |
|                  | 열 을 나타냅니다.                                        |
+------------------+----------------------------------------------------------+


항목 옵션
---------

insert와 item 위젯 명령에서 항목에 대해 다음 항목 옵션을 지정할 수 있
습니다.

+----------+-----------------------------------------------------------------+
| 옵션     | 설명                                                            |
|==========|=================================================================|
| text     | 항목에 표시할 텍스트 레이블.                                    |
+----------+-----------------------------------------------------------------+
| image    | 레이블 왼쪽에 표시되는, Tk 이미지.                              |
+----------+-----------------------------------------------------------------+
| values   | 항목과 관련된 값의 리스트.  각 항목은 위젯 옵션 열과 같은 수의  |
|          | 값을 가져야 합니다. 열보다 적은 값 이 있으면, 나머지 값은 비어  |
|          | 있다고 가정합니다. 열보다 많은 값이 있으면 , 추가 값은 무시됩니 |
|          | 다.                                                             |
+----------+-----------------------------------------------------------------+
| open     | 항목의 자식을 표시할지를 나타내는 "True"/"False" 값.            |
+----------+-----------------------------------------------------------------+
| tags     | 이 항목과 관련된 태그의 리스트.                                 |
+----------+-----------------------------------------------------------------+


태그 옵션
---------

태그에 다음 옵션을 지정할 수 있습니다:

+--------------+-------------------------------------------------------------+
| 옵션         | 설명                                                        |
|==============|=============================================================|
| foreground   | 텍스트 전경색을 지정합니다.                                 |
+--------------+-------------------------------------------------------------+
| background   | 셀이나 항목 배경색을 지정합니다.                            |
+--------------+-------------------------------------------------------------+
| font         | 텍스트를 그릴 때 사용할 글꼴을 지정합니다.                  |
+--------------+-------------------------------------------------------------+
| image        | 항목의 image 옵션이 비어있는 경우, 항목 이미지를 지정합니다 |
|              | .                                                           |
+--------------+-------------------------------------------------------------+


열 식별자
---------

열 식별자는 다음 형식 중 하나를 취합니다:

* 열 옵션 목록에 있는 기호 이름.

* n번째 데이터 열을 지정하는, 정수 n.

* #n 형식의 문자열, 여기서 n은 정수이며 n번째 표시 열을 지정합니다.

노트:

* 항목의 옵션 값은 저장된 순서와 다른 순서로 표시될 수 있습니다.

* show="tree"가 지정되지 않은 경우에도, #0 열은 항상 트리 열을 나타냅
  니다.

데이터 열 번호는 항목의 옵션 값 리스트에 대한 인덱스입니다; 표시 열 번
호는 값이 표시되는 트리의 열 번호입니다. 트리 레이블은 열 #0 에 표시됩
니다. displaycolumns 옵션을 설정하지 않으면, 데이터 열 n이 열 #n+1 에
표시됩니다. 다시, **#0 열은 항상 트리 열을 나타냅니다**.


가상 이벤트
-----------

Treeview 위젯은 다음과 같은 가상 이벤트를 생성합니다.

+----------------------+----------------------------------------------------+
| 이벤트               | 설명                                               |
|======================|====================================================|
| <<TreeviewSelect>>   | 선택이 변경될 때마다 생성됩니다.                   |
+----------------------+----------------------------------------------------+
| <<TreeviewOpen>>     | 포커스 항목을 open=True 로 설정하기 직전에 생성됩  |
|                      | 니다.                                              |
+----------------------+----------------------------------------------------+
| <<TreeviewClose>>    | 포커스 항목을 open=False 로 설정한 직후 생성됩니다 |
|                      | .                                                  |
+----------------------+----------------------------------------------------+

"Treeview.focus()"와 "Treeview.selection()" 메서드를 사용하여 영향을
받는 항목이나 항목들을 결정할 수 있습니다.


ttk.Treeview
------------

class tkinter.ttk.Treeview

   bbox(item, column=None)

      지정된 *item*의 경계 상자(트리 뷰 위젯의 창에 상대적인)를 (x, y,
      너비, 높이) 형식으로 반환합니다.

      *column*을 지정하면, 해당 셀의 경계 상자를 반환합니다. *item*이
      보이지 않으면 (즉, 닫힌 항목의 자손이거나 화면 밖으로 스크롤 되
      면) 빈 문자열을 반환합니다.

   get_children(item=None)

      *item*에 속하는 자식의 리스트를 반환합니다.

      *item*이 지정되지 않으면, 루트 자식을 반환합니다.

   set_children(item, *newchildren)

      *item*의 자식을 *newchildren*으로 바꿉니다.

      *item*에 있지만 *newchildren*에 없는 자식은 트리에서 분리됩니다.
      *newchildren*의 어떤 항목도 *item*의 조상이 될 수 없습니다.
      *newchildren*을 지정하지 않으면 *item*의 자식이 분리됨에 유의하
      십시오.

   column(column, option=None, **kw)

      지정된 *column*에 대한 옵션을 조회하거나 수정합니다.

      *kw*가 제공되지 않으면, 열 옵션 값의 딕셔너리를 반환합니다.
      *option*이 지정되면 해당 *option*의 값이 반환됩니다. 그렇지 않으
      면, 옵션을 해당 값으로 설정합니다.

      유효한 옵션/값은 다음과 같습니다:

      *id*
         열 이름을 반환합니다. 이것은 읽기 전용 옵션입니다.

      *anchor*: 표준 Tk 앵커값 중 하나.
         이 열의 텍스트가 셀을 기준으로 정렬되는 방법을 지정합니다.

      *minwidth*: 너비
         열의 픽셀 단위의 최소 너비. 위젯의 크기가 조정되거나 사용자가
         열을 드래그할 때 트리 뷰 위젯은 이 옵션으로 지정된 것보다 작
         게 열을 만들지 않습니다.

      *stretch*: "True"/"False"
         위젯 크기를 조정할 때 열 너비를 조정할지를 지정합니다.

      *width*: 너비
         열의 픽셀 단위 너비.

      트리 열을 구성하려면, column = "#0" 으로 호출하십시오.

   delete(*items)

      지정된 *items*와 그들의 모든 자손을 삭제합니다.

      루트 항목은 삭제되지 않을 수 있습니다.

   detach(*items)

      지정된 *items*를 모두 트리에서 연결 해제합니다.

      항목과 그들의 모든 자손은 여전히 존재하며, 트리의 다른 지점에 다
      시 삽입될 수 있지만, 표시되지는 않습니다.

      루트 아이템은 분리되지 않을 수 있습니다.

   exists(item)

      지정된 *item*이 트리에 있으면 "True"를 반환합니다.

   focus(item=None)

      *item*이 지정되면, 포커스 항목을 *item*으로 설정합니다. 그렇지
      않으면, 현재 포커스 항목을 반환하거나, 없으면 '' 을 반환합니다.

   heading(column, option=None, **kw)

      지정된 *column*에 대한 제목(heading) 옵션을 조회하거나 수정합니
      다.

      *kw*가 제공되지 않으면, 제목 옵션값의 딕셔너리를 반환합니다.
      *option*이 지정되면 해당 *option*의 값이 반환됩니다. 그렇지 않으
      면, 옵션을 해당 값으로 설정합니다.

      유효한 옵션/값은 다음과 같습니다:

      *text*: 텍스트
         열 제목에 표시할 텍스트.

      *image*: 이미지 이름
         열 제목의 오른쪽에 표시할 이미지를 지정합니다.

      *anchor*: 앵커
         제목 텍스트를 정렬하는 방법을 지정합니다. 표준 Tk 앵커값 중
         하나입니다.

      *command*: 콜백
         제목 레이블을 누를 때 호출되는 콜백.

      트리 열 제목을 구성하려면, column = "#0" 으로 호출하십시오.

   identify(component, x, y)

      *x* 와 *y*로 주어진 점 밑에 있는 지정된 *component*에 대한 설명
      을 반환하거나, 해당 *component*가 해당 위치에 없으면 빈 문자열을
      반환합니다.

   identify_row(y)

      *y* 위치에 있는 항목의 항목 ID를 반환합니다.

   identify_column(x)

      위치 *x*에 있는 셀의 데이터 열 식별자를 반환합니다.

      트리 열의 ID는 #0 입니다.

   identify_region(x, y)

      다음 중 하나를 반환합니다:

      +-------------+----------------------------------------+
      | 영역        | 의미                                   |
      | (region)    |                                        |
      |=============|========================================|
      | heading     | 트리 제목 영역.                        |
      +-------------+----------------------------------------+
      | separator   | 두 열 제목 사이의 공간.                |
      +-------------+----------------------------------------+
      | tree        | 트리 영역.                             |
      +-------------+----------------------------------------+
      | cell        | 데이터 셀.                             |
      +-------------+----------------------------------------+

      가용성: Tk 8.6.

   identify_element(x, y)

      위치 *x*, *y*에 있는 요소를 반환합니다.

      가용성: Tk 8.6.

   index(item)

      부모의 자식 리스트에서 *item*의 정수 인덱스를 반환합니다.

   insert(parent, index, iid=None, **kw)

      새 항목을 만들고 새로 만들어진 항목의 항목 ID를 반환합니다.

      *parent*는 부모 항목의 항목 ID이거나, 새 최상위 항목을 만들려면
      빈 문자열입니다. *index*는 정수이거나, "end" 값으로, 부모의 자식
      리스트에서 새 항목을 삽입할 위치를 지정합니다. *index*가 0보다
      작거나 같으면, 새 노드가 처음에 삽입됩니다; *index*가 현재 자식
      수보다 크거나 같으면, 끝에 삽입됩니다. *iid*가 지정되면, 항목 식
      별자로 사용됩니다; *iid*는 아직 트리에 존재하지 않아야 합니다.
      그렇지 않으면, 새로운 고유 식별자가 생성됩니다.

      사용 가능한 옵션 목록은 Item Options을 참조하십시오.

   item(item, option=None, **kw)

      지정된 *item*에 대한 옵션을 조회하거나 수정합니다.

      옵션이 제공되지 않으면 항목에 대한 옵션/값이 포함된 딕셔너리가
      반환됩니다. *option*이 지정되면 해당 옵션의 값이 반환됩니다. 그
      렇지 않으면, 옵션을 *kw*에서 제공한 해당 값으로 설정합니다.

   move(item, parent, index)

      *item*을 *parent*의 자식 리스트에서 *index* 위치로 이동합니다.

      항목을 그 자신의 자손 항목 중 하나 밑으로 이동하는 것은 불법입니
      다. *index*가 0보다 작거나 같으면, *item*이 처음으로 이동합니다;
      자식 수보다 크거나 같으면, 끝으로 이동합니다. *item*이 분리되었
      으면 다시 연결됩니다.

   next(item)

      *item*의 다음 형제의 식별자를 반환하거나, *item*이 부모의 마지막
      자식이면 '' 을 반환합니다.

   parent(item)

      *item*의 부모 ID를 반환하거나, *item*이 계층의 최상위에 있으면
      '' 을 반환합니다.

   prev(item)

      *item*의 이전 형제의 식별자를 반환하거나, *item*이 부모의 첫 번
      째 자식이면 '' 을 반환합니다.

   reattach(item, parent, index)

      "Treeview.move()"의 별칭.

   see(item)

      *item*이 보이도록 합니다.

      *item*의 모든 조상의 open 옵션을 "True"로 설정하고, 필요하면 위
      젯을 스크롤 하여 *item*이 트리의 보이는 부분 내에 있도록 합니다.

   selection()

      선택한 항목의 튜플을 반환합니다.

      버전 3.8에서 변경: "selection()"은 더는 인자를 취하지 않습니다.
      선택 상태를 변경하려면 다음 선택 메서드를 사용하십시오.

   selection_set(*items)

      *items*가 새로운 선택이 됩니다.

      버전 3.6에서 변경: *items*는 단일 튜플이 아닌 별도의 인자로 전달
      될 수 있습니다.

   selection_add(*items)

      선택에 *items*를 추가합니다.

      버전 3.6에서 변경: *items*는 단일 튜플이 아닌 별도의 인자로 전달
      될 수 있습니다.

   selection_remove(*items)

      선택에서 *items*를 제거합니다.

      버전 3.6에서 변경: *items*는 단일 튜플이 아닌 별도의 인자로 전달
      될 수 있습니다.

   selection_toggle(*items)

      *items*에 있는 각 항목의 선택 상태를 토글 합니다.

      버전 3.6에서 변경: *items*는 단일 튜플이 아닌 별도의 인자로 전달
      될 수 있습니다.

   set(item, column=None, value=None)

      하나의 인자로는, 지정된 *item*에 대한 열/값 쌍 딕셔너리를 반환합
      니다. 두 개의 인자를 사용하면, 지정된 *column*의 현재 값을 반환
      합니다. 세 개의 인자를 사용하면, 지정된 *item*의 지정된 *column*
      의 값을, 지정된 *value*로 설정합니다.

   tag_bind(tagname, sequence=None, callback=None)

      주어진 이벤트 *sequence*에 대한 콜백을 태그 *tagname*에 바인딩합
      니다. 이벤트가 항목에 전달되면, 각 항목의 태그 옵션에 대한 콜백
      이 호출됩니다.

   tag_configure(tagname, option=None, **kw)

      지정된 *tagname*에 대한 옵션을 조회하거나 수정합니다.

      *kw*가 제공되지 않으면, *tagname*에 대한 옵션 설정의 딕셔너리를
      반환합니다. *option*이 지정되면, 지정된 *tagname*에 대한 해당
      *option*의 값을 반환합니다. 그렇지 않으면, 옵션을 주어진
      *tagname*에 대해 해당하는 값으로 설정합니다.

   tag_has(tagname, item=None)

      *item*이 지정되면, 지정된 *item*에 지정된 *tagname*이 있는지에
      따라 1이나 0을 반환합니다. 그렇지 않으면, 지정된 태그가 있는 모
      든 항목의 리스트를 반환합니다.

      가용성: Tk 8.6

   xview(*args)

      트리 뷰의 가로 위치를 조회하거나 수정합니다.

   yview(*args)

      트리 뷰의 수직 위치를 조회하거나 수정합니다.


Ttk 스타일링
============

"ttk"의 각 위젯에는 스타일이 지정되는데, 이 스타일은 요소 옵션의 동적
및 기본 설정과 함께 위젯을 구성하는 요소 집합과 배열 방식을 지정합니다
. 기본적으로 스타일 이름은 위젯의 클래스 이름과 같지만, 위젯의 스타일
옵션으로 재정의될 수 있습니다. 위젯의 클래스 이름을 모르면,
"Misc.winfo_class()" 메서드(somewidget.winfo_class())를 사용하십시오.

더 보기:

  Tcl'2004 conference presentation
     이 문서는 테마 엔진의 작동 방식을 설명합니다

class tkinter.ttk.Style

   이 클래스는 스타일 데이터베이스를 조작하는 데 사용됩니다.

   configure(style, query_opt=None, **kw)

      *style*에서 지정된 옵션의 기본값을 조회하거나 설정합니다.

      *kw*의 각 키는 옵션이며 각 값은 해당 옵션의 값을 식별하는 문자열
      입니다.

      예를 들어, 모든 기본 버튼을 패딩이 있고 배경색이 다른 평평한 버
      튼으로 바꾸려면:

         from tkinter import ttk
         import tkinter

         root = tkinter.Tk()

         ttk.Style().configure("TButton", padding=6, relief="flat",
            background="#ccc")

         btn = ttk.Button(text="Sample")
         btn.pack()

         root.mainloop()

   map(style, query_opt=None, **kw)

      *style*에서 지정된 옵션의 동적 값을 조회하거나 설정합니다.

      *kw*의 각 키는 옵션이며 각 값은 (일반적으로) 튜플, 리스트 또는
      다른 선호하는 것에 그룹화된 상태 명세(statespecs)를 포함하는 리
      스트나 튜플이어야 합니다. 상태 명세(statespec)는 하나 이상의 상
      태와 그다음에 값이 오는 복합체입니다.

      예를 들면 더 이해하기 쉽습니다:

         import tkinter
         from tkinter import ttk

         root = tkinter.Tk()

         style = ttk.Style()
         style.map("C.TButton",
             foreground=[('pressed', 'red'), ('active', 'blue')],
             background=[('pressed', '!disabled', 'black'), ('active', 'white')]
             )

         colored_btn = ttk.Button(text="Test", style="C.TButton").pack()

         root.mainloop()

      옵션의 (상태들, 값) 시퀀스의 순서는 중요함에 유의하십시오. 예를
      들어, foreground 옵션에서 순서가 "[('active', 'blue'),
      ('pressed', 'red')]"로 변경되면, 예를 들어, 위젯이 active 나
      pressed 상태일 때 결과는 파란색 전경이 됩니다.

   lookup(style, option, state=None, default=None)

      *style*에서 *option*에 지정된 값을 반환합니다.

      *state*가 지정되면, 하나 이상의 상태 시퀀스일 것으로 기대됩니다.
      *default* 인자가 설정되면, 옵션에 대한 명세가 없을 때 폴 백값으
      로 사용됩니다.

      Button이 기본적으로 사용하는 글꼴을 확인하려면:

         from tkinter import ttk

         print(ttk.Style().lookup("TButton", "font"))

   layout(style, layoutspec=None)

      주어진 *style*에 대한 위젯 레이아웃을 정의합니다. *layoutspec*이
      생략되면, 지정된 스타일의 레이아웃 명세를 반환합니다.

      지정되면, *layoutspec*은 리스트나 다른 시퀀스 형(문자열 제외)이
      어야 합니다. 여기서 각 항목은 튜플이어야 하고 첫 번째 항목은 레
      이아웃 이름이고 두 번째 항목은 레이아웃에 설명된 형식이어야 합니
      다.

      형식을 이해하려면, 다음 예제를 참조하십시오 (유용한 것은 아닙니
      다):

         from tkinter import ttk
         import tkinter

         root = tkinter.Tk()

         style = ttk.Style()
         style.layout("TMenubutton", [
            ("Menubutton.background", None),
            ("Menubutton.button", {"children":
                [("Menubutton.focus", {"children":
                    [("Menubutton.padding", {"children":
                        [("Menubutton.label", {"side": "left", "expand": 1})]
                    })]
                })]
            }),
         ])

         mbtn = ttk.Menubutton(text='Text')
         mbtn.pack()
         root.mainloop()

   element_create(elementname, etype, *args, **kw)

      Create a new element in the current theme, of the given *etype*
      which is expected to be either "image" or "from".

      "image"를 사용하면, *args*는 기본 이미지 이름과 그 뒤에 오는
      statespec/value 쌍 (이것이 이미지 명세(imagespec)입니다)을 포함
      해야 하며, *kw*에는 다음 옵션이 올 수 있습니다:

      border=padding
         패딩은 각각 좌(left), 상(top), 우(right), 하(bottom) 테두리를
         지정하는 최대 4개의 정수 리스트입니다.

      height=height
         요소의 최소 높이를 지정합니다. 0보다 작으면, 기본 이미지의 높
         이가 기본값으로 사용됩니다.

      padding=padding
         요소의 내부 패딩을 지정합니다. 지정하지 않으면 기본값은
         border의 값입니다.

      sticky=spec
         최종 파슬(parcel) 내에 이미지를 배치하는 방법을 지정합니다.
         명세에는 0개 이상의 문자 "n", "s", "w" 또는 "e" 가 포함됩니다
         .

      width=width
         요소의 최소 너비를 지정합니다. 0보다 작으면, 기본 이미지의 너
         비가 기본값으로 사용됩니다.

      예제:

         img1 = tkinter.PhotoImage(master=root, file='button.png')
         img1 = tkinter.PhotoImage(master=root, file='button-pressed.png')
         img1 = tkinter.PhotoImage(master=root, file='button-active.png')
         style = ttk.Style(root)
         style.element_create('Button.button', 'image',
                              img1, ('pressed', img2), ('active', img3),
                              border=(2, 4), sticky='we')

      "from"이 *etype*의 값으로 사용되면, "element_create()"는 기존 요
      소를 복제합니다. *args*는 요소를 복제할 테마 이름(themename)과,
      선택적으로 요소를 복제할 요소를 포함할 것으로 기대됩니다. 복제할
      요소를 지정하지 않으면, 빈 요소가 사용됩니다. *kw*는 폐기됩니다.

      예제:

         style = ttk.Style(root)
         style.element_create('plain.background', 'from', 'default')

   element_names()

      현재 테마에 정의된 요소 목록을 반환합니다.

   element_options(elementname)

      *elementname*의 옵션 리스트를 반환합니다.

   theme_create(themename, parent=None, settings=None)

      새로운 테마를 만듭니다.

      *themename*이 이미 존재하면 에러입니다. *parent*가 지정되면, 새
      테마는 부모 테마에서 스타일, 요소 및 레이아웃을 상속합니다.
      *settings*가 있으면, "theme_settings()"에 사용되는 것과 같은 문
      법일 것으로 기대됩니다.

   theme_settings(themename, settings)

      현재 테마를 *themename*으로 임시 설정하고, 지정된 *settings*를
      적용한 다음 이전 테마를 복원합니다.

      *settings*의 각 키는 스타일이며 각 값에는 'configure', 'map',
      'layout' 및 'element create' 키가 포함될 수 있으며 각각
      "Style.configure()", "Style.map()", "Style.layout()" 및
      "Style.element_create()"가 지정한 것과 같은 형식을 갖습니다.

      예를 들어, 기본 테마의 Combobox를 약간 변경해 봅시다:

         from tkinter import ttk
         import tkinter

         root = tkinter.Tk()

         style = ttk.Style()
         style.theme_settings("default", {
            "TCombobox": {
                "configure": {"padding": 5},
                "map": {
                    "background": [("active", "green2"),
                                   ("!disabled", "green4")],
                    "fieldbackground": [("!disabled", "green3")],
                    "foreground": [("focus", "OliveDrab1"),
                                   ("!disabled", "OliveDrab2")]
                }
            }
         })

         combo = ttk.Combobox().pack()

         root.mainloop()

   theme_names()

      알려진 모든 테마의 리스트를 반환합니다.

   theme_use(themename=None)

      *themename*이 제공되지 않으면, 사용 중인 테마를 반환합니다. 그렇
      지 않으면, 현재 테마를 *themename*으로 설정하고, 모든 위젯을 새
      로 고치고 <<ThemeChanged>> 이벤트를 방출합니다.


레이아웃
--------

레이아웃은 옵션을 취하지 않으면 "None"일 수 있습니다, 또는 요소를 정렬
하는 방법을 지정하는 옵션의 딕셔너리입니다. 레이아웃 메커니즘은 pack
지오메트리 관리자의 단순화 된 버전을 사용합니다: 초기 캐비티(cavity)가
주어지면, 각 요소에는 파슬(parcel)이 할당됩니다.

유효한 옵션/값은 다음과 같습니다:

*side*: whichside
   요소를 배치할 캐비티(cavity)의 변을 지정합니다; 상(top), 우(right),
   하(bottom) 또는 좌(left) 중 하나입니다. 생략하면, 요소가 전체 캐비
   티를 차지합니다.

*sticky*: nswe
   할당된 파슬(parcel)에서 요소가 배치되는 위치를 지정합니다.

*unit*: 0 또는 1
   1로 설정하면, "Widget.identify()" 등의 목적으로 요소와 그것의 모든
   자손이 단일 요소로 처리됩니다. 그립이 있는 스크롤 막대 썸(thumbs)과
   같은 것들에 사용됩니다.

*children*: [sublayout... ]
   요소 안에 배치할 요소 리스트를 지정합니다. 각 요소는 첫 번째 항목이
   레이아웃 이름이고, 다른 하나는 레이아웃인 튜플(또는 다른 시퀀스 형)
   입니다.
