tkinter ttk.Button 控件

本文主要介绍 tkinterttk.Button 控件的简单用法和可选参数列表。

如何在顶层窗口中创建一个 ttk.Button

如下代码在顶层窗口 root 中创建了一个名为 btn 的按钮。

from tkinter import *

root = Tk()
btn = Button(root,text="第一个按钮") #创建一个按钮,并放置在root中
btn.pack() # 放置按钮

root.mainloop()

以上代码执行完毕后,会弹出如下图所示窗口。

python tkinter Checkbutton 对象获取值 tkinter.button_python

按钮中的文字由参数 text 指定。

除了参数 text 之外,在创建一个 Button 时,还可以指定多种参数值,文章末尾会全部列出。

现在,我们只讨论常用几个参数。

如何指定 ttk.Button 样式

Button 的3D样式由参数 relief 指定,如下代码创建了一个红色字体,蓝色背景的凸出按钮:

from tkinter import *
from tkinter import ttk

root = Tk()
style_default = ttk.Style()

style_default.configure("TButton",foreground="red",background="blue",relief=RAISED)

btn = ttk.Button(root,text="第二个按钮",style="TButton")
btn.pack()

root.mainloop()

relief 参数使用传入的 RAISED 值,会创建一个如下图所示的,和 “第一个按钮” 截然不同的凸出按钮:

python tkinter Checkbutton 对象获取值 tkinter.button_python_02

SUNKEN 同样有意思的值还有很多,都列在下面啦,一个个去尝试吧!

  • RAISED=‘raised’
  • SUNKEN=‘sunken’
  • FLAT=‘flat’
  • RIDGE=‘ridge’
  • GROOVE=‘groove’
  • SOLID = ‘solid’

除了按钮的3D样式之外,我们常用的参数还有宽和高(widthheight)。

如何制定按钮的大小

按钮宽度由参数 width 指定,以下代码创建了一个宽度为17个字符的按钮:

from tkinter import *
from tkinter import ttk

root = Tk()
style = ttk.Style()
style.configure("TButton",width=17)
btn = ttk.Button(text="abcdefg",style='TButton')
btn.pack()

root.mainloop()

代码执行结果,如下图所示:

python tkinter Checkbutton 对象获取值 tkinter.button_控件_03

ttk.Button 控件和 tkinter 原生按钮不同,不具备 height 参数,具体原因目前还不清楚,还在学习过程中。

按钮的宽以字符数量来确定的,如果是图像按钮则是以像素为单位的,不要忘了哦!!

以上代码还能写成如下形式:

from tkinter import *
from tkinter import ttk
root = Tk()
btn = ttk.Button(root,text="abcdefg",width=17)
btn.pack()

root.mainloop()

这种方式只对 width 参数有用,其他样式参数还是要使用 Style 传入!!

如何为按钮绑定事件

按钮绑定点击事件是通过 command 进行的,相信读到这里,你已经知道如何做了:

import tkinter
from tkinter import ttk

def click():
    btn['style']='C.TButton'

root = tkinter.Tk()
s1 = ttk.Style()
s2 = ttk.Style()
s1.configure("TButton",background='red')
s2.configure("C.TButton",background="blue")

btn = ttk.Button(text='btn',command=click)
btn.pack()
root.mainloop()

以上代码创建了一个具有红色背景的按钮,并给 command 参数传入了一个函数
在函数里改变了按钮的颜色。
执行结果如下:

点击之前

python tkinter Checkbutton 对象获取值 tkinter.button_python_04

点击之后

python tkinter Checkbutton 对象获取值 tkinter.button_bc_05

所有可选参数表

以下是按钮的所有参数及其介绍:

参数

描述

activebackground

按钮在光标下时的背景颜色

activebackground

按钮在光标下时的前景颜色

anchor

文本在按钮上的位置。 例如,anchor=tk.NE 会将文本放置在按钮的右上角

bd 或者 borderwidth

按钮外部的边框宽度,默认是两个像素

bg 或者 background

正常状态下的背景色

bitmap

要在按钮上显示的标准位图之一的名称(而不是文本)。

command

单击按钮时要调用的函数或方法。

cursor

选择当鼠标悬停在按钮上时显示的光标

default

tk.NORMAL 是默认值; 如果按钮最初被禁用(变灰,对鼠标点击无响应),请使用 tk.DISABLED

disabledforeground

禁用按钮时使用的前景色

fg 或者 foreground

正常的前景色(文本)颜色

font

用于按钮的文本字体

height

以文本行(对于文本按钮)或像素(对于图像)为单位的按钮高度

highlightbackground

按钮有焦点时的高亮背景色

highlightcolor

控件有焦点时焦点高亮的颜色

highlightthickness

焦点高光的厚度

image

展示在按钮上的图片(而不是文字)

justify

如何显示多行文本: tk.LEFT 左对齐每一行;tk.CENTER 将它们居中; 或 tk.RIGHT 右对齐

overrelief

鼠标在按钮上时使用的浮雕样式; 默认样式是 tk.RAISED

padx

文本左侧和右侧的附加填充

pady

文本上侧和下册的附加填充

relief

指定按钮的浮雕类型。默认浮雕tk.RAISED

repeatdelay

请参阅下面的repeatinterval

repeatinterval

通常,当用户释放鼠标按钮时,按钮只会触发一次。如果您希望按钮在按住鼠标按钮时按固定间隔触发,请将此选项设置为要在重复之间使用的毫秒数,并将 repeatdelay 设置为在开始重复之前等待的毫秒数。例如,如果您指定“ repeatdelay=500, repeatinterval=100”按钮将在半秒后触发,此后每十分之一秒触发一次,直到用户释放鼠标按钮。 如果用户没有按住鼠标按钮至少 repeatdelay 毫秒,按钮将正常触发。

state

将此选项设置为 tk.DISABLED 以使按钮变灰并使其无响应。 当鼠标悬停在其上方时,其值为 tk.ACTIVE。 默认值为 tk.NORMAL

takefocus

通常,键盘焦点会访问按钮,空格字符的作用与鼠标单击相同,“按下”按钮。 您可以将 takefocus 选项设置为零以防止焦点访问按钮

text

按钮上显示的文本。 使用内部换行符显示多个文本行

textvariable

与此按钮上的文本相关联的 StringVar() 实例。 如果变量更改,新值将显示在按钮上

underline

默认值为 -1,这意味着按钮上的文本字符将不带有下划线。 如果非负,相应的文本字符将被划线。 例如,underline=1 将在按钮文本的第二个字符下划线。

width

以字母(如果显示文本)或像素(如果显示图像)为单位的按钮宽度

wraplength

如果此值设置为正数,文本行将被换行以适应此长度