0%

Python Tkinter Button窗口组件类

Button 窗口部件

Button(按钮)窗口部件是一个标准的 Tkinter 窗口部件,用来实现各种按钮。

按钮能够包含文本或图象,并与一个 Python 函数或方法相关联。当这个按钮被按下时,Tkinter 自动调用相关联的函数或方法。

按钮仅能显示一种字体,但是这个文本可以跨行。另外,这个文本中的一个字母可以有__下划线__,例如标明一个快捷键。默认情况,Tab 键用于将焦点移动到一个按钮部件。

一、那么什么时候用按钮部件呢?

简而言之,按钮部件用来让用户说“马上给我执行这个任务”,通常我们用显示在按钮上的文本或图象来提示。 按钮通常用在工具条中或应用程序窗口中,并且用来接收或忽略输入在对话框中的数据。

关于按钮和输入的数据的配合,可以参看 Checkbutton 和 Radiobutton 部件。

二、样式

普通的按钮很容易被创建,仅仅指定按钮的内容(文本、位图、图象)和一个当按钮被按下时的回调函数即可:

1
b = Button(master, text="OK", command=self.ok) 

没有回调函数的按钮是没有用的,当你按下这个按钮时它什么也不做。你可能在开发一个应用程序的时候想实现这种按钮,比如为了不干扰你的 beta 版的测试者:

1
b = Button(master, text="Help", state=DISABLED) 

如果你没有指定尺寸,按钮的大小将正好能够容纳它的内容。你可以用 padx 和 pady 选项来增加内容与按钮 边框的间距。你也可以用 height 和 width 选项来显式地设置按钮的尺寸。如果你在按钮中显示文本,那么这些选项将以文本的单位为定义按钮的尺寸。如果你替而代之显示图象,那么按钮的尺寸将是象素 (或其它的屏幕单位)。你实际上甚至能够用象素单位来定义文本按钮的尺寸,但这可能带来意外的结果。下面是指定尺寸 的一段例子代码:

1
2
f = Frame(master, height=32, width=32) f.pack_propagate(0) # don't shrink
b = Button(f, text="Sure!") b.pack(fill=BOTH, expand=1)

按钮能够显示多行文本(但只能用一种字体)。 你可以使用多行或 wraplength 选项来使按钮自己调整文本。 当调整文本时,使用 anchor,justify,也可加上 padx 选项来得到你所希望的格式。一个例子如下:

1
b = Button(master, text=longtext, anchor=W, justify=LEFT, padx=2) 

为了使一个普通的按钮看起来像凹入的,例如你想去实现某种类型的工具框,你可简单地将 relief 的值从 “RAISED“改变为”SUNKEN:

三、方法

Button 窗口部件支持标准的 Tkinter 窗口部件接口,加上下面的方法:

  • flash():频繁重画按钮,使其在活动和普通样式下切换
  • invoke() :调用与按钮相关联的命令
  • 下面的方法与你实现自己的按钮绑定有关:

tkButtonDown(), tkButtonEnter(), tkButtonInvoke(), tkButtonLeave(), tkButtonUp() 这些方法可以用在定制事件绑定中,所有这些方法接收 0 个或多个形参。

四、选项

Button 窗口部件支持下面的选项:

activebackground, activeforeground

类型:颜色;
说明:当按钮被激活时所使用的颜色。

anchor

类型:常量;
说明:控制按钮上内容的位置。使用N, NE, E, SE, S, SW, W, NW, or CENTER这些值之一。默认值 是 CENTER。

background (bg), foreground (fg)

类型:颜色;
说明:按钮的颜色。默认值与特定平台相关。

bitmap

类型:位图;
说 明:显示在窗口部件中的位图。如果 image 选项被指定了,则这个选项被忽略。下面的位图在所有平台上 都有 效:error, gray75, gray50, gray25, gray12, hourglass, info, questhead, question, 和 warning.

这后面附加的位图仅在 Macintosh 上有效:document, stationery, edition, application, accessory, folder, pfolder, trash, floppy, ramdisk, cdrom, preferences, querydoc, stop, note, 和 caution.

1
borderwidth (bd)

类型:整数; 说明:按钮边框的宽度。默认值与特定平台相关。但通常是 1 或 2 象素。

command

类型:回调; 说明:当按钮被按下时所调用的一个函数或方法。所回调的可以是一个函数、方法或别的可调用的 Python 对 象。

cursor

类型:光标;
说明:当鼠标移动到按钮上时所显示的光标。

default

类型:常量;
说明:如果设置了,则按钮为默认按钮。注意这个语法在Tk 8.0b2中已改变。

disabledforeground
类型:颜色;
说明:当按钮无效时的颜色。

font

类型:字体;
说明:按钮所使用的字体。按钮只能包含一种字体的文本。

highlightbackground, highlightcolor

类型:颜色;
说明:控制焦点所在的高亮边框的颜色。当窗口部件获得焦点的时候,边框为 highlightcolor 所指定的颜 色。否则边框为 highlightbackground 所指定的颜色。默认值由系统所定。

highlightthickness

类型:距离; 说明:控制焦点所在的高亮边框的宽度。默认值通常是 1 或 2 象素。

image

类型:图象;
说明:在部件中显示的图象。如果指定,则 text 和 bitmap 选项将被忽略。

justify

类型:常量;

说明:定义多行文本如何对齐。可取值有:LEFT, RIGHT, 或 CENTER。

padx, pady

类型:距离;
说明:指定文本或图象与按钮边框的间距。

relief

类型:常量;
说明:边框的装饰。通常按钮按下时是凹陷的,否则凸起。另外的可能取值有 GROOVE, RIDGE, 和 FLAT。

state

类型:常量;
说明:按钮的状态:NORMAL, ACTIVE 或 DISABLED。默认值为 NORMAL。

takefocus

类型:标志;
说明:表明用户可以 Tab 键来将焦点移到这个按钮上。默认值是一个空字符串,意思是如果按钮有按键绑定的 话,它可以通过所绑定的按键来获得焦点。

text

类型:字符串;
说明:显示在按钮中的文本。文本可以是多行。如果 bitmaps 或 image 选项被使用,则 text 选项被忽略。

textvariable

类型:变量;
说明:与按钮相关的 Tk 变量(通常是一个字符串变量)。如果这个变量的值改变,那么按钮上的文本相应更新。

underline

类型:整数; 说明:在文本标签中哪个字符加下划线。默认值为-1,意思是没有字符加下划线。

width, height

类型:距离; 说明:按钮的尺寸。如果按钮显示文本,尺寸使用文本的单位。如果按钮显示图象,尺寸以象素为单位(或屏 幕的单位)。如果尺寸没指定,它将根据按钮的内容来计算。

wraplength

类型:距离; 说明:确定一个按钮的文本何时调整为多行。它以屏幕的单位为单位。默认不调整。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道