英文: The Tkinter Button Widget

目录

Tkinter Button 组件

何时使用Button组件

模式

参考

Tkinter Button 组件

Button组件是用于实现各种按钮的标准Tkinter组件。
按钮可以包含文本或图像。
可以将Python函数或方法与每个按钮关联, 按下按钮后,Tkinter会自动调用该函数或方法。

该按钮只能以一种字体显示文本,但是文本可能会跨越多行。
此外,可以在其中一个字符加下划线,例如标记键盘快捷键。(没懂啥意思)
默认情况下,Tab键可用于移动到按钮组件。

何时使用Button组件

简而言之,Button组件用于让用户说“立即执行操作!”,该操作既可以由按钮上的文本给出,也可以由按钮上显示的图标暗示。
Button通常用于应用程序窗口中的工具栏,并用于接受或关闭输入到对话框中的数据。

如果需要通过按钮来获取数据输入,请参见Checkbutton和Radiobutton组件。

模式

普通按钮非常易于使用。
您所要做的就是指定按钮的内容(比如:文本,位图或图像)以及按下按钮时要调用的函数或方法:
栗子:

from tkinter import *

master = Tk()

def callback():
    print('miaopasi')

btn = Button(master, text='link start', command=callback)
btn.pack()

master.mainloop()

没有回调的按钮是没有意义的,当你按下按钮时,它什么也没做。
在开发应用程序时,你可能仍希望使用此类按钮,在这种情况下,最好禁用该按钮以避免让人混淆:

disable_btn = Button(master, text='Help', state=DISABLED)
disable_btn.pack()

如果未指定大小,则按钮的大小正好足以容纳其内容。
可以使用padx和pady选项在内容和按钮边框之间添加一些额外的空间。

还可以使用height和width选项来显式设置大小。
如果在按钮中显示文本,则这些选项以文本单位定义按钮的大小。
如果改为显示位图或图像,则它们以像素(或其他屏幕单位)为单位定义大小。
甚至可以为文本按钮指定像素大小,但这需要一些技巧。
其中一种实现方法(还有其他方法):

frame = Frame(master, height=50, width=50)
frame.pack_propagate(0)
frame.pack()

btn1 = Button(frame, text='Sure!')
btn1.pack(fill=BOTH, expand=1)

按钮可以显示多行文本(但只能显示一种字体)。
可以使用换行符,也可以使用wraplength选项使按钮本身自动换行。 换行时,请使用anchor,justify以及可能的padx选项,使内容看起来完全符合您的期望。 举个栗子:

btn2 = Button(master, wraplength=200, text='You can use newlines, or use the wraplength option to make the button wrap text by itself. ', anchor=W, justify=LEFT, padx=2)
btn2.pack()

要使普通按钮看起来像被按下一样,比如想实现某种工具箱,则可以将释放方式从RAISED更改为SUNKEN:

btn3 = Button(master, text='SUNKEN button', relief=SUNKEN, command=callback)
btn3.pack()

如果还希望更改背景,更好的解决方案是使用将indicatoron选项设置为false的Checkbutton或Radiobutton:

blod = PhotoImage(file='miaopasi.gif')
var = StringVar()
checkBtn = Checkbutton(master, image=blod, variable=var, indicatoron=0, width=50, height=20, padx=3)
checkBtn.pack()

在早期版本的Tkinter中,图像选项会覆盖文本选项。 如果同时指定两者,则仅显示图像。
在更高版本中,您可以使用compound选项更改此行为。 要在图像顶部显示文本,将“ compound”设置为“ CENTER”:

btn4 = Button(master, text="miaopasi", image=blod, width=200, height=30, compound=CENTER)
btn4.pack()

如果想文本和显示图标一起显示,compound设置为LEFT,RIGHT,TOP或BOTTOM之一:

btn5 = Button(master, compound=LEFT, text="miaopasi", image=blod)
btn5.pack()
btn6 = Button(master, compound=TOP, text="miaopasi", image=blod)
btn6.pack()

参考

Button(master=None, **options) (class)

说明:执行命令的按钮

参数:

master,父部件
**options,可选项,参考下方config中的说明。

方法:

flash()
刷新Button组件,该方法将重绘 Button 组件若干次。

invoke()
调用Button中 command 选项指定的函数或方法。

.............................................................................................................................................................................................

config(**options)

修改一个或多个组件选项。 如果没有给出选项,则该方法返回包含所有当前选项值的字典。

**options 

选项

含义

activebackground

设置当Button处于活动状态的背景色

默认值由系统指定

activeforeground

设置当Button处于活动状态的前景色
默认值由系统指定

anchor

控制文本(或图像)在Button中显示的位置

NNEESESSWWNW, 或者CENTER
默认值是CENTER

background、bg

设置背景颜色

默认值由系统指定

bitmap

指定显示到Button上的位图

如果指定了image 选项,则该选项被忽略

borderwidth、bd

指定Button的边框宽度

默认值由系统指定,通常是1或2像素

compound

控制 Button 中文本和图像的混合模式
默认情况下,如果有指定位图或图片,则不显示文本

如果该选项设置为 CENTER,文本显示在图像上
如果该选项设置为 BOTTOMLEFTRIGHT,或者TOP, 那么图像显示在文本的旁边
默认值是 NONE

cursor

指定当鼠标在Button上飘过的时候的鼠标样式

默认值由系统指定

default

如果设置该选项("normal"),该按钮会被绘制成默认按钮

Tkinter 会根据平台的具体指标来绘制

默认值是DISABLED 

disabledforeground

指定当Button不可用的时候前景色的颜色

默认值由系统指定

font

指定Button中文本的字体

一个Button只能设置一种字体

默认值由系统指定

foreground、fg

设置Button的文本和位图的颜色

默认值由系统指定

height

Button的高度

如果Button显示的是文本,那么单位是文本单元

如果Button显示的是图像,那么单位是像素(或屏幕单元)

如果设置为 0 或者干脆不设置,那么会自动根据Button的内容计算出高度

width

Button的宽度

如果Button显示的是文本,那么单位是文本单元

如果Button显示的是图像,那么单位是像素(或屏幕单元)

如果设置为 0 或者干脆不设置,那么会自动根据Button的内容计算出宽度

highlightbackground

指定当Button没有获得焦点的时候高亮边框的颜色

默认值由系统指定

highlightcolor

指定当Button获得焦点的时候高亮边框的颜色

默认值由系统指定

highlightthickness

指定高亮边框的宽度

默认值是 0(不带高亮边框)

image

指定Button显示的图片

该值应该是 PhotoImage,BitmapImage,或者能兼容的对象

该选项优先于 text 和 bitmap 选项

justify

定义如何对齐多行文本

使用LEFTRIGHT,或者 CENTER
注意,文本的位置取决于 anchor 选项
默认值是 CENTER

overrelief

定义当鼠标飘过时Button的样式

如果不设置,那么总是使用 relief 选项指定的样式

padx

指定Button 水平方向上的外间距(内容和边框间)

pady

指定Button垂直方向上的外间距

relief

指定边框样式

通常当按钮被按下时是 SUNKEN ,其他时候是RAISED 

另外你还可以设置 GROOVERIDGE, 和FLAT

默认值是 RAISED 

state

指定Button的状态

可以是 NORMALACTIVE 或者DISABLED.
默认值是 NORMAL

takefocus

指定使用 Tab 键可以将焦点移到该 Button 组件上(这样按下空格键也相当于触发按钮事件)

默认是开启的,可以将该选项设置为 False 避免焦点在此 Button 上

text

指定Button显示的文本

文本可以包含换行符

如果设置了 bitmap 或 image 选项,该选项则被忽略

textvariable

Button显示 Tkinter 变量(通常是一个 StringVar 变量)的内容

如果变量被修改,Button 的文本会自动更新

underline

跟 text 选项一起使用,用于指定哪一个字符画下划线(例如用于表示键盘快捷键) 

默认值是 -1

wraplength

决定 Button 的文本应该被分成多少行

该选项指定每行的长度,单位是屏幕单元

默认值是