python3 tkinter教程_tkinter学习教程(三)

3.按钮控件——Button

Button组件用于在 tkinter 应用程序中添加按钮,按钮上可以设置文本或图像,用于监听用户行为,能够与一个 Python 函数关联;当按钮被按下时,自动调用该函数。

创建一个无关联命令的按钮:

from tkinter import *

root = Tk()

b = Button(root, text ="点我")

b.pack()

root.mainloop()图3.1 无命令按钮

和Label类似,Button也有很多属性选项(在tkinter的新版本中,甚至不止这些):text按钮的文本内容

image按钮上要显示的图片

command按钮关联的函数,当按钮被点击时,执行该函数

height按钮的高度

width按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小)

fg按钮的前景色(按钮文本的颜色)

bg按钮的背景色

padx按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离

pady按钮在y轴方向上的内边距(padding)

activebackground当鼠标放上去时,按钮的背景色

activeforeground当鼠标放上去时,按钮的前景色

font文本字体

bd按钮边框的大小,默认为 2 个像素

highlightcolor要高亮的颜色

justify显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER

relief边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。

state设置按钮组件状态,可选的有NORMAL、ACTIVE、 DISABLED。默认 NORMAL。

underline下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,前两个字符带下划线,以此类推

wraplength限制按钮每行显示的字符的数量

anchor锚选项,控制文本的位置,默认为中心

cursor 指定当鼠标在 Button 上飘过的时候的鼠标样式,可选的有"arrow"、"circle"、"clock"、"cross"、"dotbox"、"exchange"、"fleur"、"heart"、"heart"、"man"、"mouse"、"pirate"、"plus"、"shuttle"、"sizing"、"spider"、"spraycan"、"star"、"target"、"tcross"、"trek"、"watch"

compound 控制 Button 中文本和图像的混合模式,默认情况下,如果有指定位图或图片,则不显示文本;可选的有"center"、"bottom"、"left"、"right" 或 "top"

和Label一样,你可以使用 height 和 width 选项来明确设置 Button 的大小:如果你显示的是文本,那么这两个选项是以文本单元为单位;如果你显示的是位图或者图像,那么它们以像素为单位。同时,padx 和 pady 选项可以在 Button 的内容和边框间添加额外的间距(Label也是如此)。

其他属性我就不一一展示了,有兴趣的话可以自行探索。

不知道你是否还记得,关于Label如何同时显示文本和图像,上一节我们留了个悬念。其实不仅是Label,Button也可以!在早期版本的 tkinter 中,image 选项的确会覆盖 text 选项。但在新的 tkinter 中,你可以使用 compound 选项设置二者的混合模式。例如,通过设置 compound="center" 使得文字位于图片中央的上方(重叠显示):

from tkinter import *

root = Tk()

photo = PhotoImage(file = '1.png')

b = Button(root, text="点我",image = photo, compound = "center")

b.pack()

root.mainloop()图3.2 图片和文字混合

现在我们只是绘制了Button,接下来就用它来实现上节提到的,改变Label的内容吧。

第一种方法,通过config方法设置text属性:

from tkinter import *

def call():

l.config(text="林四儿")

root = Tk()

l = Label(root,text="123")

l.pack()

b = Button(root, text="点我",command=call)

b.pack()

root.mainloop()

第二种方法,通过StringVar()来改变textvariable属性:

from tkinter import *

from PIL import Image,ImageTk

def call():

v.set("林四儿")

root = Tk()

v = StringVar(value="123")

l = Label(root,textvariable=v)

l.pack()

b = Button(root, text="点我",command=call)

b.pack()

root.mainloop()

两种方法的结果是一样的。不同的是,config方法还可以改变其他属性,而StringVar只能设置Label的可变文本。

command选项默认的方式是点击鼠标左键,按下按钮后触发,但Button和其他控件一样,可以通过绑定鼠标或键盘事件的方式,实现其他触发效果。具体方法我们会在以后讲解。

掌握了tkinter两种最基本的控件后,下一节我们会学习如何对界面进行布局。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值