一个组件是一个用户界面对象/控件(例如,按钮、标签、滚动条),一个基于组件的应用的最终用户通过它同应用通信。交互通常是用一个象鼠标这样的定点设备做的选择或键入一个字符串(文本输入) 。每个组件属于定义它的外观的自己的一个类(配置选项如前景色,字体等)和一系列用于访问和操纵组件的方法(例如修改配置,如改变背景色)。
依赖于它们的类/类型,组件可以包括其他的组件(例如,菜单条包含下拉菜单,桢,行列)。一个基于组件的应用可以包含一个或多个层次的组件(例如,文件选择框,一个文本编辑器有一个有一个弹出一个文件选择框的菜单项目 "open")。
一般的,组件编程有基本的三个步骤。它们是:
注意行为可以是一个单一的命令,如当一个"Quit"按钮被按下调用"exit"命令,或者是有输入参数的调用复杂行为的一组命令(例如,选择标签是"Beethovan"的按钮将导致查找特定的磁带并播放它)。
组件工具箱被设计成分派几何管理器(决定在屏幕上的大小和相对父组件的位置)到独立的进程,这样任何组件可以被任何几何管理器来管理,多个几何管理器可以共存并提供一致的行为(例如,调整父组件的大小,则所有的在其中的子组件的大小)。
你调用几何管理器并提供选项来决定特定组件如何定位(例如,右/左对齐(justified),在它的父/兄组件内/上放置在顶部/底部/左边/右边。如果你不指定任何特定的位置,确定位置基于缺省算法。
在 Tk 中,在一个组件建立的时候,也建立了一个与组件相关联的唯一的命令。组件命令与组件有相同的名字。组件命令被用于同组件通信而改变组件的内部状态 - 比如说完成动作 - 例如变更背景色。对于复杂的组件,可以指定的动作依赖于组件的类别 - 例如在一个列表框或菜单中访问、插入、删除项目,但这不提供给标签组件类。