tkinter学习系列(四)之Button 控件
目录
前言
button小部件是一个标准的tkinter的控件,用于实现各种按钮。按钮可以包含文本或图像,您可以调用python函数或方法用于每个按钮。tkinter的按钮被按下时,会自动调用该函数或方法
(一)基本用法和可选属性
==1.基本用法==
基本用法:button(根对象, [属性列表])
根对象:在那个窗体显示,例如主窗体。
属性列表:是可选的属性=属性值组成。
==2.可选属性==
属性 | 说明 |
---|---|
text | 标签显示的文本 |
font | 设置文本的字体和大小 |
fg(foreground) | 字体的颜色, |
bg (background) | 标签的背景色 |
width | 标签的宽度(一个中文的字体宽为单位) |
height | 标签的高度(一个中文的字体高为单位) |
cursor | 鼠标的样式 |
command | 绑定事件 |
padx | 文字到边框的距离,水平方向 |
pady | 文字到边框的距离,垂直方向 |
bd(borderwidth) | 边框的宽度 |
relief | 边框的样式 |
justify | 文本对齐方式 |
image | 图片 |
compound | 图片与文字的混搭 |
anchor | 方位 |
(二)属性的具体实现和案例
==1.常用属性==
(1)font
font:设置字体与字体的大小
用法:font=("字体名",大小) 例如:font=(“黑体”, 20)
(2)fg 与 bg
fg 前景色,也就是字体的颜色,bg 背景颜色
用法:fg="red", fg="#121234"
(3)width 与 height
width height 标签的宽度与高度,都是以系统默认的中文的一个字体宽高为单位
用法:width = 5, height=2
==案例一==
(1)源代码
import tkinter as tk win = tk.tk() # 普通的按钮 button1 = tk.button(win, text="button1") button1.pack() # 背景色与前景色 button2 = tk.button(win, text="button2", bg="green", fg="blue") button2.pack() # 宽度与高度 button3 = tk.button(win, text="button3", width=10, height=2) button3.pack() # 边距 button4 = tk.button(win, text="button4", padx=10, pady=10) button4.pack() win.mainloop()
(2)输出效果
==2.按钮里的图片==
(1)只放图片,没有文字
需要先导入图片的路径:img1 = tk.photoimage(file="image/01.png")
再使用:image=img1
注:目前支持 .png 与 .gif 格式, 还不支持 .jpg格式,==button的大小是根据图片的大小来确定的。==
==案例二==
(1)源代码:
import tkinter as tk win = tk.tk() img1 = tk.photoimage(file="image/01.png") img2 = tk.photoimage(file="image/03.png") img3 = tk.photoimage(file="image/04.png") # 300像素大小的图片 button1 = tk.button(win, text="button1", image=img1) button1.pack() # 150像素大小的图片 button2 = tk.button(win, image=img2) button2.pack() # 50像素大小的图片 button3 = tk.button(win, image=img3) button3.pack() win.mainloop()
(2)输出效果:
(3)图片与文字混搭
需要使用:compound="对齐方式",
对齐方式有:'left', "right", "center"
==案例三==
(1)源代码
import tkinter as tk win = tk.tk() img1 = tk.photoimage(file="image/01.png") img2 = tk.photoimage(file="image/03.png") img3 = tk.photoimage(file="image/04.png") button1 = tk.button(win, text="button1", image=img1, compound="left") button1.pack() button2 = tk.button(win, text="button2", image=img2, compound="center") button2.pack() button3 = tk.button(win, text="button3", image=img3, compound="right") button3.pack() win.mainloop()
(2)输出效果
==3.鼠标的样式==
cursor="鼠标的属性值"
pencil:笔型
circle:圆形
hand1:手型1
hand2:手型2
==案例四==
(1)源代码
import tkinter as tk win = tk.tk() # 笔型 button1 = tk.button(win, text="button1", cursor="pencil") button1.pack() # 圆形 button2 = tk.button(win, text="button2", cursor="circle") button2.pack() # 手型1 button3 = tk.button(win, text="button3", cursor="hand1") button3.pack() # 手型2 button4 = tk.button(win, text="button4", cursor="hand2") button4.pack() win.mainloop()
(2)输出效果
当我们把鼠标放在按钮上时,鼠标的形状会显示不同的样式。
==4.边框样式==
relief= "边框样式值"
flat 无边框
groove 中间凹
ridge 中间凸
raised 往中间凸
solid 往中间凹
sunken 不可以
==案例五==
(1)源代码
import tkinter as tk win = tk.tk() # flat 无边框 button1 = tk.button(win, text="flat", relief="flat", bd=10) button1.pack() # groove 中间凹 button2 = tk.button(win, text="groove", relief="groove", bd=10) button2.pack() # ridge 中间凸 button3 = tk.button(win, text="raised", relief="ridge", bd=10) button3.pack() # raised 往中间凸 button4 = tk.button(win, text="ridge", relief="raised", bd=10) button4.pack() # solid 往中间凹 button5 = tk.button(win, text="solid", relief="solid", bd=10) button5.pack() # sunken 不可以 button6 = tk.button(win, text="sunken", relief="sunken", bd=10) button6.pack() win.mainloop()
(2)输出效果
(三)按钮的事件绑定
==1.普通的button绑定事件==
(1)说明:
button 使用 command=功能函数 来绑定
button(win, text="确定", command=功能函数)
==案例六==
(1)源代码:
我们创建一个简单的窗体,只有一个按钮控件,
我们绑定的事件是,当我们点击"确定"按钮时,会输出“你点击了按钮”
import tkinter as tk win = tk.tk() # 定义功能函数, event是必须添加的参数,不知道来自哪里 def button_command(): print("你点击了按钮") # 绑定事件 btn = tk.button(win, text="确定", command=button_command) btn.place(relx=0.2, rely=0.2, relwidth=0.5, relheight=0.1) win.geometry("300x300+200+200") win.mainloop()
(2)输出效果:
==2.传参数button绑定事件==
(1)说明:
我们使用button传递数值时,需要用:
lambda: 功能函数(var1, var2, ……)
==案例七==
(1)源代码:
我们同样创建一个简单的窗体,只有一个控件按钮
我们绑定的事件是,当我们点击按钮时,会传入两个参数,并在功能函数进行计算。
import tkinter as tk """ button command 传值事件 command= lambda: function(var1, var2, ...) """ def sum_fun(a, b): result = a + b print("%d + %d = %d" % (a, b, result)) win = tk.tk() button = tk.button(win, text="传值事件", command=lambda: sum_fun(12, 13)) button.pack() win.geometry("300x300+200+200") win.mainloop()