tkinter ttk.Button 控件
本文主要介绍 tkinter
中 ttk.Button
控件的简单用法和可选参数列表。
如何在顶层窗口中创建一个 ttk.Button
如下代码在顶层窗口 root
中创建了一个名为 btn
的按钮。
from tkinter import *
root = Tk()
btn = Button(root,text="第一个按钮") #创建一个按钮,并放置在root中
btn.pack() # 放置按钮
root.mainloop()
以上代码执行完毕后,会弹出如下图所示窗口。
按钮中的文字由参数 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
值,会创建一个如下图所示的,和 “第一个按钮” 截然不同的凸出按钮:
和 SUNKEN
同样有意思的值还有很多,都列在下面啦,一个个去尝试吧!
- RAISED=‘raised’
- SUNKEN=‘sunken’
- FLAT=‘flat’
- RIDGE=‘ridge’
- GROOVE=‘groove’
- SOLID = ‘solid’
除了按钮的3D样式之外,我们常用的参数还有宽和高(width
和height
)。
如何制定按钮的大小
按钮宽度由参数 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()
代码执行结果,如下图所示:
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
参数传入了一个函数
在函数里改变了按钮的颜色。
执行结果如下:
点击之前
点击之后
所有可选参数表
以下是按钮的所有参数及其介绍:
参数 | 描述 |
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 | 通常,当用户释放鼠标按钮时,按钮只会触发一次。如果您希望按钮在按住鼠标按钮时按固定间隔触发,请将此选项设置为要在重复之间使用的毫秒数,并将 repeatdelay 设置为在开始重复之前等待的毫秒数。例如,如果您指定“ repeatdelay=500, repeatinterval=100”按钮将在半秒后触发,此后每十分之一秒触发一次,直到用户释放鼠标按钮。 如果用户没有按住鼠标按钮至少 repeatdelay 毫秒,按钮将正常触发。 |
state | 将此选项设置为 tk.DISABLED 以使按钮变灰并使其无响应。 当鼠标悬停在其上方时,其值为 tk.ACTIVE。 默认值为 tk.NORMAL |
takefocus | 通常,键盘焦点会访问按钮,空格字符的作用与鼠标单击相同,“按下”按钮。 您可以将 takefocus 选项设置为零以防止焦点访问按钮 |
text | 按钮上显示的文本。 使用内部换行符显示多个文本行 |
textvariable | 与此按钮上的文本相关联的 StringVar() 实例。 如果变量更改,新值将显示在按钮上 |
underline | 默认值为 -1,这意味着按钮上的文本字符将不带有下划线。 如果非负,相应的文本字符将被划线。 例如,underline=1 将在按钮文本的第二个字符下划线。 |
width | 以字母(如果显示文本)或像素(如果显示图像)为单位的按钮宽度 |
wraplength | 如果此值设置为正数,文本行将被换行以适应此长度 |