## Tcl8.6.17/Tk8.6.17 Documentation > Tk Commands > ttk_intro

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

ttk::intro — Tk 主題の期間の紹介 Introduction to the Tk theme engine

### 概論 OVERVIEW

Tk 主題部品は様式機関に指定された TIP #48 版 (https://tip.tcl-lang.org/48) の再登場と修正に基礎を置く｡主要な概念は下に述べる｡基本的着想は､その外観の実装命令譜から部品の挙動の実装の命令譜を分離する事､可能な発展､である｡部品の級の束縛は主に部品の状態の維持を担当し､回収を起動する; 部品の外観の全ての側面は部品の様式により制御される(即ち部品の要素の方式)｡ The Tk themed widget set is based on a revised and enhanced version of TIP #48 (https://tip.tcl-lang.org/48) specified style engine. The main concepts are described below. The basic idea is to separate, to the extent possible, the code implementing a widget's behavior from the code implementing its appearance. Widget class bindings are primarily responsible for maintaining the widget state and invoking callbacks; all aspects of the widget's appearance are controlled by the style of the widget (i.e. the style of the elements of the widget).

### 主題 THEMES

theme は要素と様式の集積であり部品の組の外観と感触を定める｡主題は次のように使える: A theme is a collection of elements and styles that determine the look and feel of the widget set. Themes can be used to:

- OSの違いの分離(X11 対 古典 Windows 対 XP 対 Aqua …) isolate platform differences (X11 vs. classic Windows vs. XP vs. Aqua ...)

- 表示装置の限界への適合(色分解能､単色､白黒､小画面) adapt to display limitations (low-color, grayscale, monochrome, tiny screens)

- 発展性(高濃淡､大型画面) accessibility (high contrast, large type)

- 一揃いの応用譜の銘柄化 application suite branding

- 残りの机上物 (Gnome, KDE, Java)と混ぜる blend in with the rest of the desktop (Gnome, KDE, Java)

- それと無論､目の保養 and, of course: eye candy.

### 要素 ELEMENTS

要素は部品の個別の部分を表示する｡譬えば､垂直摺動盤部品は上向き矢､下向き矢､下向き矢印､樋､摺動桿の部分｡ An element displays an individual part of a widget. For example, a vertical scrollbar widget contains uparrow, downarrow, trough and slider elements.

要素の名前は再帰的な点による連結命名法である｡譬えば､ uparrow (上向き矢印)識別子は一般的な矢の要素であり､ Scrollbar.uparrow と Combobox.uparrow 識別子は部品固有の要素である｡要素を捜す時､様式機関は固有の名前を最初に捜し､その名前の要素が見付からない場合､要素名の引続く部分を剥しながら一般要素を捜す｡ Element names use a recursive dotted notation. For example, uparrow identifies a generic arrow element, and Scrollbar.uparrow and Combobox.uparrow identify widget-specific elements. When looking for an element, the style engine looks for the specific name first, and if an element of that name is not found it looks for generic elements by stripping off successive leading components of the element name.

部品の様に､要素は指示項目を持ち､それは何を表示し或はどの様に表示するかを指定する｡譬えば､ text 要素は(それは文書文字列を表示する)､ -text,と -font,と -foreground,と -background,と -underline, と -width 指示項目を有する｡要素の指示項目の値が取る形式は次の通り(優先順): Like widgets, elements have options which specify what to display and how to display it. For example, the text element (which displays a text string) has -text, -font, -foreground, -background, -underline, and -width options. The value of an element option is taken from (in precedence order):

- 要素を含む部品内の同じ名前と型の指示項目; an option of the same name and type in the widget containing the element;

- style map と現在の状態によって指定される動的設定 a dynamic setting specified by style map and the current state;

- style configure による省略時設定による指定; the default setting specified by style configure; or

- 指示項目の為の要素の組込み省略時設定値｡ the element's built-in default value for the option.

### 配置 LAYOUTS

layout はどの要素を部品に作り上げ､如何に配列するかを指定する｡整列機関は簡素版の pack の仕組みである: 初めに､部品と同じ寸法の空洞から出発する､要素は空洞内に -side 指示項目により指定された側の区画に割付られ､ -sticky 指示項目に従って置かれる｡譬えば､水平の摺動盤の為の配置は: A layout specifies which elements make up a widget and how they are arranged. The layout engine uses a simplified version of the pack algorithm: starting with an initial cavity equal to the size of the widget, elements are allocated a parcel within the cavity along the side specified by the -side option, and placed within the parcel according to the -sticky option. For example, the layout for a horizontal scrollbar is:

    ttk::style layout Horizontal.TScrollbar {
        Scrollbar.trough -children {
    	Scrollbar.leftarrow -side left -sticky w
    	Scrollbar.rightarrow -side right -sticky e
    	Scrollbar.thumb -sticky ew
        }
    }

省略時設定では部品の配置はその級名と同じである｡ある部品はそれを上書きする(譬えば､ ttk::scrollbar 部品は -orient 指示項目による配列と異なって撰ぶ)｡ By default, the layout for a widget is the same as its class name. Some widgets may override this (for example, the ttk::scrollbar widget chooses different layouts based on the -orient option).

### 状態 STATES

標準的 Tk 内では多くの部品は -state 指示項目を有し(多くの場合)､それは normal か disabled である｡ある部品は更なる状態を運営する､譬えば､ entry 部品は readonly 状態を有し､多くの釦の類は活性な状態を有する｡ In standard Tk, many widgets have a -state option which (in most cases) is either normal or disabled. Some widgets support additional states, such as the entry widget which has a readonly state and the various flavors of buttons which have active state.

主題の Tk 部品はこの概念を一般化した: 全ての部品は独立状態の旗標の点地図を有する｡部品の状態旗標は active や disabled や pressed や focus や etc がある｡(状態の旗標の全状態リストは ttk::widget(n) を参照されたい)｡ The themed Tk widgets generalizes this idea: every widget has a bitmap of independent state flags. Widget state flags include active, disabled, pressed, focus, etc., (see ttk::widget(n) for the full list of state flags).

-state 指示項目の代りに全ての部品は今 state 部品命令を有し､それは状態の問合せと設定に使える｡ state specification は象徴的状態の名前のリストでどのビットが設定されているかを指し示し､それぞれのそのビットが代りに消去されたことを示す句読点を追加的に前置する｡ Instead of a -state option, every widget now has a state widget command which is used to set or query the state. A state specification is a list of symbolic state names indicating which bits are set, each optionally prefixed with an exclamation point indicating that the bit is cleared instead.

譬えば､ ttk::button 部品の為の級束縛は: For example, the class bindings for the ttk::button widget are:

    bind TButton <Enter>		{ %W state active }
    bind TButton <Leave>		{ %W state !active }
    bind TButton <ButtonPress-1>	{ %W state pressed }
    bind TButton <Button1-Leave>	{ %W state !pressed }
    bind TButton <Button1-Enter>	{ %W state pressed }
    bind TButton <ButtonRelease-1>	\
        { %W instate {pressed} { %W state !pressed ; %W invoke } }

この指定は指示子が部品に入った時に部品が active になり､離れた時に不活性になる｡同様にマウス釦が押された時に pressed に､釦が離れた行事で !pressed になる｡更に､もし釦-1 が押されている間に指示子が部品の外に引出される場合､釦は非押下になる､又､それが引張り戻された場合再度押下になる｡最後に､マウス釦が解除された時､部品の -command が起動されるが､現在の処 pressed state 状態の場合のみである｡(実際の束縛は上の説明より少しだけ､込っている) This specifies that the widget becomes active when the pointer enters the widget, and inactive when it leaves. Similarly it becomes pressed when the mouse button is pressed, and !pressed on the ButtonRelease event. In addition, the button unpresses if pointer is dragged outside the widget while Button-1 is held down, and represses if it's dragged back in. Finally, when the mouse button is released, the widget's -command is invoked, but only if the button is currently in the pressed state. (The actual bindings are a little more complicated than the above, but not by much).

### 様式 STYLES

それぞれの部品は様式と結合している､それは要素の指示項目の値を指定する｡様式の名前は配列や要素の様な再帰的な点による連結命名法が使われる; 省略時設定では､部品は級の名前を現在に主題内の捜索に使われる｡譬えば: Each widget is associated with a style, which specifies values for element options. Style names use a recursive dotted notation like layouts and elements; by default, widgets use the class name to look up a style in the current theme. For example:

    ttk::style configure TButton \
    	-background #d9d9d9 \
    	-foreground black \
    	-relief raised \
    	;

多くの要素は部品の状態の帰結と異なる様に表示されている｡譬えば､釦は､それが活性の時に異なった背景を有し､不能の時に異なった前景を有し､押下のときに異なった立体感を有す｡ style map 命令は特別の様式の為に動的指示項目の設定を指定する: Many elements are displayed differently depending on the widget state. For example, buttons have a different background when they are active, a different foreground when disabled, and a different relief when pressed. The style map command specifies dynamic option settings for a particular style:

    ttk::style map TButton \
    	-background [list disabled #d9d9d9  active #ececec] \
    	-foreground [list disabled #a3a3a3] \
    	-relief [list {pressed !disabled} sunken] \
    	;

### SEE ALSO

ttk::widget, ttk::style
Copyright © 2004 Joe English