Button 控件是 Tkinter 中常用的窗口部件之一,同时也是实现程序与用户交互的主要控件。通过用户点击按钮的行为来执行回调函数,是 Button 控件的主要功用。
首先自定义一个函数或者方法,然后将函数与按钮关联起来,最后,当用户按下这个按钮时,Tkinter 就会自动调用相关函数。
按钮控件使用起来非常简单,它同样可以包含文本、图像、位图,并通过command参数回调函数。当然按钮也并非一定要执行回调函数(callback function),它也只可以当一个“摆设”,不过这样的按钮是没有“灵魂的”
1 2 3 4 5 6 7 8
| import tkinter as tk # from setuptools import Command root = tk.Tk() root.geometry("300x300") btn = tk.Button(root, text ="xiaoyang", command=quit) btn.pack() root.mainloop()
|
anchor
控制文本所在的位置,默认为中心位置(CENTER)
activebackground
当鼠标放在按钮上时候,按钮的背景颜色
activeforeground当鼠标放在按钮上时候,按钮的前景色
bd
按钮边框的大小,默认为 2 个像素
bg
按钮的背景色
command
用来执行按钮关联的回调函数。当按钮被点击时,执行该函数
fg
按钮的前景色
font按钮文本的字体样样式
height
按钮的高度
highlightcolor
按钮控件高亮处要显示的颜色
image
按钮上要显示的图片
justify
按钮显示多行文本时,用来指定文本的对齐方式,参数值有 LEFT/RIGHT/CENTER
padx/pady
padx 指定 x 轴(水平方向)的间距大小,pady 则表示 y轴(垂直方向)的间距大小
ipadx/ipady
ipadx 指标签文字与标签容器之间的横向距离;
ipady 则表示标签文字与标签容器之间的纵向距离
state设置按钮的可用状态,可选参数有NORMAL/ACTIVE/DISABLED,默认为 NORMAL
text
按钮控件要显示的文本
1 2 3 4 5 6 7 8 9 10 11
| import tkinter as tk from tkinter import messagebox # from setuptools import Command root = tk.Tk() root.geometry("300x300") def tishi(): # 使用消息对话框控件,showinfo()表示温馨提示 messagebox.showinfo(title='温馨提示', message='hello') btn = tk.Button(root, text ="xiaoyang", command=tishi) btn.pack() root.mainloop()
|
下面为 Button 控件添加一张背景图片,实现代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12
| import tkinter as tk from tkinter import Image, messagebox # from setuptools import Command root = tk.Tk() root.geometry("300x300") photo = tk.PhotoImage(file="D:\\File\\All\\web\\python\\blog\\99.png") def tishi(): # 使用消息对话框控件,showinfo()表示温馨提示 messagebox.showinfo(title='温馨提示', message='hello') btn = tk.Button(root, text ="xiaoyang", command=tishi,image= photo,width=20,height=20) btn.pack() root.mainloop()
|
扩展
按钮的布局按钮在主窗口中的布局,通常使用 grid() 函数来完成,该函数以网格状的形式(即行和列)来管理窗口的布局。grid() 布局管理器提供了一个sticky参数,通过该参数可以设置按钮的方位,该参数默认将控件设置居中,其他参数值有 N/S/W/E(上/下/左/右),而且可以组合在一起使用,比如 NW/WE/SE/SW/NE 等,这与anchor参数控制文本的显示位置,有着异曲同工之妙。如下图所示:
注意:
值得大家注意的是 grid() 布局方法不能与 pack() 混合在一起使用
使用了grid布局就不用再使用pack了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import tkinter as tk from tkinter import messagebox win = tk.Tk() win.geometry('400x200+100+100') win.resizable(0,0) # 将俩个标签分别布置在第一行、第二行 tk.Label(win, text="账号:").grid(row=0) tk.Label(win, text="密码:").grid(row=1) # 创建输入框控件 e1 = tk.Entry(win) # 以 * 的形式显示密码 e2 = tk.Entry(win,show='*') e1.grid(row=0, column=1, padx=10, pady=5) e2.grid(row=1, column=1, padx=10, pady=5) # 编写一个简单的回调函数 def login(): messagebox.showinfo('hello') # 使用 grid()的函数来布局,并控制按钮的显示位置 tk.Button(win, text="登录", width=10, command=login).grid(row=3, column=0, sticky="w", padx=10, pady=5) tk.Button(win, text="退出", width=10, command=win.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5) win.mainloop()
|