tkinter.ttk --- Tk 主題化小工具¶
The tkinter.ttk module provides access to the Tk themed widget set,
introduced in Tk 8.5. It provides additional benefits including anti-aliased font
rendering under X11 and window transparency (requiring a composition
window manager on X11).
The basic idea for tkinter.ttk is to separate, to the extent possible,
the code implementing a widget's behavior from the code implementing its
appearance.
也參考
- Tk Widget Styling Support
A document introducing theming support for Tk
使用 Ttk¶
To start using Ttk, import its module:
from tkinter import ttk
To override the basic Tk widgets, the import should follow the Tk import:
from tkinter import *
from tkinter.ttk import *
That code causes several tkinter.ttk widgets (Button,
Checkbutton, Entry, Frame, Label,
LabelFrame, Menubutton, PanedWindow,
Radiobutton, Scale and Scrollbar) to
automatically replace the Tk widgets.
This has the direct benefit of using the new widgets which gives a better
look and feel across platforms; however, the replacement widgets are not
completely compatible. The main difference is that widget options such as
"fg", "bg" and others related to widget styling are no
longer present in Ttk widgets. Instead, use the ttk.Style class
for improved styling effects.
也參考
- Converting existing applications to use Tile widgets
A monograph (using Tcl terminology) about differences typically encountered when moving applications to use the new widgets.
Ttk Widgets¶
Ttk comes with 18 widgets, twelve of which already existed in tkinter:
Button, Checkbutton, Entry, Frame,
Label, LabelFrame, Menubutton, PanedWindow,
Radiobutton, Scale, Scrollbar, and Spinbox.
The other six are new: Combobox, Notebook,
Progressbar, Separator, Sizegrip and
Treeview. And all them are subclasses of Widget.
Using the Ttk widgets gives the application an improved look and feel. As discussed above, there are differences in how the styling is coded.
Tk code:
l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")
Ttk code:
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")
For more information about TtkStyling, see the Style class
documentation.
Widget¶
ttk.Widget defines standard options and methods supported by Tk
themed widgets and is not supposed to be directly instantiated.
標準選項¶
All the ttk Widgets accept the following options:
選項 |
描述 |
|---|---|
class |
Specifies the window class. The class is used when querying the option database for the window's other options, to determine the default bindtags for the window, and to select the widget's default layout and style. This option is read-only, and may only be specified when the window is created. |
cursor |
Specifies the mouse cursor to be used for the widget. If set to the empty string (the default), the cursor is inherited for the parent widget. |
takefocus |
Determines whether the window accepts the focus during keyboard traversal. 0, 1 or an empty string is returned. If 0 is returned, it means that the window should be skipped entirely during keyboard traversal. If 1, it means that the window should receive the input focus as long as it is viewable. And an empty string means that the traversal scripts make the decision about whether or not to focus on the window. |
style |
May be used to specify a custom widget style. |
Scrollable Widget Options¶
The following options are supported by widgets that are controlled by a scrollbar.
選項 |
描述 |
|---|---|
xscrollcommand |
Used to communicate with horizontal scrollbars. When the view in the widget's window change, the widget will generate a Tcl command based on the scrollcommand. Usually this option consists of the method
|
yscrollcommand |
Used to communicate with vertical scrollbars. For some more information, see above. |
Label Options¶
The following options are supported by labels, buttons and other button-like widgets.
選項 |
描述 |
|---|---|
text |
Specifies a text string to be displayed inside the widget. |
textvariable |
Specifies a name whose value will be used in place of the text option resource. |
underline |
If set, specifies the index (0-based) of a character to underline in the text string. The underline character is used for mnemonic activation. |
image |
Specifies an image to display. This is a list of 1 or more
elements. The first element is the default image name. The
rest of the list if a sequence of statespec/value pairs as
defined by |
compound |
Specifies how to display the image relative to the text, in the case both text and images options are present. Valid values are:
|
width |
If greater than zero, specifies how much space, in character widths, to allocate for the text label, if less than zero, specifies a minimum width. If zero or unspecified, the natural width of the text label is used. |
相容性選項¶
選項 |
描述 |
|---|---|
state |
May be set to "normal" or "disabled" to control the "disabled"
state bit. This is a write-only option: setting it changes the
widget state, but the |
Widget States¶
The widget state is a bitmap of independent state flags.
旗標 |
描述 |
|---|---|
active |
The mouse cursor is over the widget and pressing a mouse button will cause some action to occur |
disabled |
Widget is disabled under program control |
focus |
Widget has keyboard focus |
pressed |
Widget is being pressed |
selected |
"On", "true", or "current" for things like Checkbuttons and radiobuttons |
background |
Windows and Mac have a notion of an "active" or foreground window. The background state is set for widgets in a background window, and cleared for those in the foreground window |
readonly |
Widget should not allow user modification |
alternate |
A widget-specific alternate display format |
invalid |
The widget's value is invalid |
A state specification is a sequence of state names, optionally prefixed with an exclamation point indicating that the bit is off.
ttk.Widget¶
Besides the methods described below, the ttk.Widget supports the
methods tkinter.Widget.cget() and tkinter.Widget.configure().