tkinter之按钮Button组件,⽤代码详细讲解
创建⼀个默认的按钮
今天讲解Button按钮组件,按钮组件是编程过程最常⽤到的组件之⼀,我们可以把按钮当成⼀个外观不同的加强版的标签,这所以这样说,是因为标签有的属性,按钮基本上都⽤,但按钮有的属性,如command属性,标签就没有。
下⾯我先来简单地讲解⼀下按钮和标签共有的属性,如果讲解有不太清楚,也以回过头去看看标签属性的讲解。
定义按钮语法:Button(⽗组件,其它参数…..)
下⾯的代码在窗体中定义⼀个按钮:
from tkinter import *
root=Tk()
but1=Button(root,text="确定") # 定义按钮
but1.pack(pady=10) # 定位按钮 root.mainloop()
运⾏如下:
属性:text,wraplength,justify
1.text :按钮上显⽰的⽂本。
2.wraplength 决定第⼀⾏⽂本的长度,单位是像素。
3.justify 决定多⾏显⽰⽂本对齐⽅式。
同标签组件⼀样,text属性也可以多⾏显⽰,你可以在⽂章⾥加”\n”硬回车换⾏,也可以使⽤参数 wraplength来换⾏。如:
a='确定选\n择合适\n选项'
but1=Button(root,text=a) # 定义按钮
but1.pack(pady=10) # 定位按钮
或
a='''确定选
择合适
选项''' # 多⾏字符串⽤3个单引号框起来
but1=Button(root,text=a) # 定义按钮
but1.pack(pady=10) # 定位按钮
或
a='确定选择合适选项'
but1=Button(root,text=a,wraplength=40) # 定义按钮
but1.pack(pady=10) # 定位按钮
以上⽤三种⽅法演⽰Button⽂本换⾏,运⾏结果⼀样:
多⾏⽂本显⽰是默认居中对齐,如果靠左对齐,参数加⼊:justify='left’ , 如果要⽂本右对齐,参数加⼊:justify='right’ ,代码如下:
a='确定选择合适选项'
but1=Button(root,text=a,wraplength=40,justify='left') # 定义按钮
but1.pack(pady=10) # 定位按钮
运⾏如下:
属性:relief,font
relief : 按钮的样式。按钮的样式跟标签完全⼀样。所有样式如下:
# flat groove raised ridge solid sunken
# 平 边凹 凸 边凸 ⿊框 凹
上⼀篇⽂章,我们把标签伪装成按钮的样⼦,同样,我们也可以把按钮伪装成标签( relief='flat’),只是这个伪装成标签的按钮是⽀持⿏标点击的。
a='确定选择合适选项'
but1=Button(root,text=a,wraplength=40,justify='left',relief='flat') # 定义按钮
but1.pack(pady=10) # 定位按钮
运⾏如下:
font : 字体设置。跟标签⼀样,可以⽤元组⽅法来设置字体,我们来回顾⼀下:
from tkinter import *
改变button按钮的形状root=Tk()
but1=Button(root,text='确定',font=('⿊体',12,'bold','italic','underline','overstrike')) # 定义按钮
but1.pack(pady=10) # 定位按钮
root.mainloop()
运⾏如下:
属性:fg,bg
fg, foreground :字体颜⾊
bg, background :按钮背景颜⾊
from tkinter import *
root=Tk()
but1=Button(root,text='确定',fg='white',bg='green') # 定义按钮
but1.pack(pady=10) # 定位按钮
root.mainloop()
运⾏如下:
属性:padx/pady
padx/pady 以像素为单位让按钮变“胖”⼀点。padx, pady分别是决定按钮⽂本内容到按钮边框之间的内边距。
from tkinter import *
root=Tk()
but1=Button(root,text='确定',fg='white',bg='green',padx=10,pady=10) # 定义按钮but1.pack(pady=10) # 定位按钮
root.mainloop()
padx=10增加按钮左右10个像素的内边距,pady=10增加按钮上下10个像素的内边距。
运⾏结果:
属性:widht,height
width, height 以字符为单位为决定按钮的宽和⾼,如果按钮内容有图像,那单位应该是像素。
注意:字符单位是英⽂字符单位,中⽂字符要乘2,可能还不太准确。
from tkinter import *
root=Tk()
but1=Button(root,text='确定',fg='white',bg='green',width=8,height=2) # 定义按钮
but1.pack(pady=10) # 定位按钮
root.mainloop()
width=8,height=2 说明这个按钮的宽,可以容纳8个英⽂字符,⾼可以容纳2⾏字符。
运⾏结果跟上⾯⽤padx/pady来让按钮变‘胖’的结果差不多:
属性:activebackground,activeforeground
activebackground : 当按钮组件处于活动状态时的背景颜⾊。
activeforeground : 当按钮组件处于活动状态时的字体颜⾊。
state : 组件的状态
有时,我们希望⿏标点击按钮时,有颜⾊⽅⾯的变化,就可以⽤到上述2个参数。让按钮处于活动状态时,背景⾊,字体颜⾊都会有变化,按钮状态可以⽤⿏标直接点击改变,也可以⽤ state() ⽅法来设置。
from tkinter import *
root=Tk()
but1=Button(root,text='确定',activebackground='red',activeforeground='white') # 定义按钮
but1.pack(pady=10) # 定位按钮
but1['state']='active' # 设置活动状态
root.mainloop()
运⾏结果如下:
由于我们⽤ but1['state']='active' 设置按钮1在启动时就为活动状态,所以窗体⼀启动,即为红⾊背景,⽩⾊字体;当⿏标划过,按钮恢复平常颜⾊,如果⽤⿏标点击按钮,就可以再次看到活动状态下的颜⾊。
有时,我们需要按钮暂时不能点击,可以设置 but1['state']='disabled'
在上⾯的代码⾥,我们把
but1['state']='active'
改成
but1['state']='disabled'
就可以让按钮变“灰”,按钮被禁⽌点击,你点击它也没有什么反应。
运⾏如下:
设置按钮的焦点
我们常常需要窗体⼀启动成功,焦点就处于某个组件上,这样既可以⽤⿏标点击这个组件,也可以⽤空格键击打这个组件。
焦点设置很简单,设置⽅法是:组件.focus_set()
from tkinter import *
root=Tk()
but1=Button(root,text='确定') # 定义按钮but1.pack(pady=10) # 定位按钮
but1.focus_set() # 设置焦点
root.mainloop()
运⾏结果,按钮上⾯有⼀圈虚线,说明设置焦点成功:
属性:image
按钮也可以像标签⼀样显⽰图像,⽽且相关语法跟标签完全⼀样,在这⾥,我们再把相关知识回顾⼀下。
先在代码⽬录⾥准备⼀个图⽚⽂件:horn.png (⼀个喇叭图) 镕亓焗
from tkinter import *
root=Tk()
img1=PhotoImage(file='horn.png') # 先把图像转为图像对象
but1=Button(root,text='确定',image=img1) # image=图像对象
but1.pack(pady=10) # 定位按钮
root.mainloop()
运⾏如下
代码⾥,图⽚⽂件不能直接使⽤,必须要先转为图像对象才可以使⽤。如果⽂本和图像同时要显⽰,图⽚优先显⽰ ,⽂本不显⽰。如果希望⽂本和图像同时显⽰,就必须要使⽤⼀个参数:compound='left' 选项:left, right top, bottom, center
from tkinter import *
root=Tk()
img1=PhotoImage(file='horn.png') # 先把图像转为图像对象
but1=Button(root,text='确定',image=img1,compound='left') # image=图像对象
but1.pack(pady=10) # 定位按钮
root.mainloop()
运⾏结果如下:
⾃定义外观的按钮
有朋友想⾃⼰做⼀个按钮,⾃⼰先准备⼀个png图⽚⽂件,这个png图像四周圆⾓部分是透明的。代码如下:
from tkinter import *
root=Tk()
# root['bg']='yellow' # 这⾥可以设置窗体背景颜⾊
img1=PhotoImage(file='button.png')
but1=Button(root,text='退出',image=img1,compound='center')
but1.pack(pady=10)
root.mainloop()
运⾏结果如下:(下图为有透明⾊的 button.png)
tkinter按钮改变外观的说明:
这个按钮必须要设置:样式为flat,边宽为0,按钮背景颜⾊以及活动状态下的背景颜⾊必须跟窗体的背景颜⾊统⼀才可以做⼀个⾃定义的按钮。
在标签⾥有⼀个属性: textvariable 没有讲解,按钮也有这个参数,这⾥也不讲解,以后会在讲解变量⾥,专门讲解。
属性:command
下⾯要讲解按钮最重要的⼀个参数:
command : 指定按钮点击以后要执⾏的动作(回调函数)。
command参数有⼏种写法:
第1种⽅法:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论