本教程是博主个人心血,如有引用,需在文章顶部标明引用信息
tkinter Button 控件
如何在顶层窗口中创建一个 Button
如下代码在顶层窗口 root
中创建了一个名为 btn
的按钮。
from tkinter import *
root = Tk()
btn = Button(root,text="第一个按钮") #创建一个按钮,并放置在root中
btn.pack() # 放置按钮
root.mainloop()
以上代码执行完毕后,会弹出如下图所示窗口。
按钮中的文字由参数 text
指定。
除了参数 text
之外,在创建一个 Button
时,还可以指定多种参数值,文章末尾会全部列出。
现在,我们只讨论常用几个参数。
如何指定按钮样式
Button
的样式由参数 relief
指定,如下代码:
from tkinter import *
root = Tk()
btn = Button(root,text="第二个按钮",relief=SUNKEN)
btn.pack()
root.mainloop()
relief
参数使用传入的 SUNKEN
值,会创建一个如下图所示的,和 “第一个按钮” 截然不同的凹陷按钮:
和 SUNKEN
同样有意思的值还有很多,都列在下面啦,一个个去尝试吧!
- RAISED='raised'
- SUNKEN='sunken'
- FLAT='flat'
- RIDGE='ridge'
- GROOVE='groove'
- SOLID = 'solid'
除了按钮的3D样式之外,我们常用的参数还有宽和高(width
和height
)。
如何制定按钮的大小
和 relief
参数一样,想要在创建按钮的时候指定按钮大小,只需要为 width
和 height
两个参数传入对应的值就好了。
from tkinter import *
root = Tk()
btn = Button(root,text="abcdefg",relief=GROOVE,width=7,height=6)
btn.pack()
root.mainloop()
以上代码创建了一个宽为7个字符,高为6行的按钮,如下图所示:
这个形状奇特的按钮,宽度恰好放下7个字符,高度正好能够放下6行文字。
按钮的宽和高是以字符数量和行数来确定的,如果是图像按钮则是以像素为单位的,不要忘了哦!!
以上代码还能写成如下形式:
from tkinter import *
root = Tk()
btn = Button(root,text="abcdefg",relief=GROOVE)
btn['width']=6
btn['height']=7
btn.pack()
root.mainloop()
按钮参数并不是必须在创建时指定,在完成创建之后,同样可以通过以上方式进行更改。
这种写法对所有控件都是有效的哦,并不是按钮的特长!!
如何设置按钮的背景颜色
以下代码创建了一个红色背景的按钮:
from tkinter import *
root = Tk()
btn = Button(root,text="第四个按钮")
btn['bg']='red'
btn.pack()
root.mainloop()
代码执行结果如下图:
其他参数的用法和以上参数的方式都是一样的,在文末问列出所有的参数及其用途,不要错过呦!!
如何为按钮绑定事件
按钮绑定点击事件是通过 command
进行的,相信读到这里,你已经知道如何做了:
from tkinter import *
def click():
btn['bg']='blue'
root = Tk()
btn = Button(root,text="点我吧",bg='red',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
|
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 | 如果此值设置为正数,文本行将被换行以适应此长度 |