Tkinter常用控件和属性

11个月前 (04-26)
我们知道,一个完整的 GUI 程序,其实是由有许多小的控件(widgets)构成的,比如按钮、文本框、输入框、选择框、菜单栏等等。在学习 Tkinter GUI 编程的过程中,不仅要学会如何摆放这些控件,还是掌握各种控件的功能、属性,只有这样才能开发出一个界面设计优雅,功能设计完善的 GUI 程序。

在创作本套教程的过程中,我们以控件的功能、属性作为切入点进行讲解。只有了解了控件的基本功能,才能在编程时得心应手。

控件类型

下表列出了 Tkinter 中常用的 15 个控件:

控件类型

控件名称

控件作用

Button

按钮

点击按钮时触发/执行一些事件(函数)

Canvas

画布

提供绘制图,比如直线、矩形、多边形等

Checkbutton

复选框

多项选择按钮,用于在程序中提供多项选择框

Entry

文本框输入框

用于接收单行文本输入

Frame

框架(容器)控件

定义一个窗体(根窗口也是一个窗体),用于承载其他控件,即作为其他控件的容器

Lable

标签控件

用于显示单行文本或者图片

LableFrame

容器控件

一个简单的容器控件,常用于复杂的窗口布局。

Listbox

列表框控件

以列表的形式显示文本

Menu

菜单控件

菜单组件(下拉菜单和弹出菜单)

Menubutton

菜单按钮控件

用于显示菜单项

Message

信息控件

用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能

messageBox

消息框控件

定义与用户交互的消息对话框

OptionMenu

选项菜单

下拉菜单

PanedWindow

窗口布局管理组件

为组件提供一个框架,允许用户自己划分窗口空间

Radiobutton

单选框

单项选择按钮,只允许从多个选项中选择一项

Scale

进度条控件

定义一个线性“滑块”用来控制范围,可以设定起始值和结束值,并显示当前位置的精确值

Spinbox

高级输入框

Entry 控件的升级版,可以通过该组件的上、下箭头选择不同的值

Scrollbar

滚动条

默认垂直方向,鼠标拖动改变数值,可以和 Text、Listbox、Canvas等控件配使用

Text

多行文本框

接收或输出多行文本内容

Toplevel

子窗口

在创建一个独立于主窗口之外的子窗口,位于主窗口的上一层,可作为其他控件的容器


在后续内容中,我们会陆续对上表中涉及的控件进行介绍。当然,除了上述控件外,还有一些高级控件,比如 PanedWindow、messagebox、LableFrame、Spinbox,在后续章节也会讲解。

控件基本属性

从上表来看,每个控件都有着各自不同的功能,即使有些控件功能相似,但它们的适用场景也不同。

在 Tkinter 中不同的控件受到各自参数的约束(即参数),所有控件既有相同属性,也有各自独有的属性。本节内容,先对这些控件的共用属性做简单介绍,如下表所示:

属性名称

说明

anchor

定义控件或者文字信息在窗口内的位置

bg

bg 是 background 的缩写,用来定义控件的背景颜色,参数值可以颜色的十六进制数,或者颜色英文单词

bitmap

定义显示在控件内的位图文件

borderwidth

定于控件的边框宽度,单位是像素

command

该参数用于执行事件函数,比如单击按钮时执行特定的动作,可将执行用户自定义的函数

cursor

当鼠标指针移动到控件上时,定义鼠标指针的类型,字符换格式,参数值有 crosshair(十字光标)watch(待加载圆圈)plus(加号)arrow(箭头)等

font

若控件支持设置标题文字,就可以使用此属性来定义,它是一个数组格式的参数 (字体,大小,字体样式)

fg

fg 是 foreground 的缩写,用来定义控件的前景色,也就是字体的颜色

height

该参数值用来设置控件的高度,文本控件以字符的数目为高度(px),其他控件则以像素为单位

image

定义显示在控件内的图片文件

justify

定义多行文字的排列方式,此属性可以是 LEFT/CENTER/RIGHT

padx/pady

定义控件内的文字或者图片与控件边框之间的水平/垂直距离

relief

定义控件的边框样式,参数值为FLAT(平的)/RAISED(凸起的)/SUNKEN(凹陷的)/GROOVE(沟槽桩边缘)/RIDGE(脊状边缘)

text

定义控件的标题文字

state

控制控件是否处于可用状态,参数值默认为 NORMAL/DISABLED,默认为 NORMAL(正常的)

width

用于设置控件的宽度,使用方法与 height 相同

注意:对于上述属性先做大体的了解即可,因为后续章节会对这些控件做更为详细的介绍。