Tkinter Button按钮控件
按钮控件使用起来非常简单,它同样可以包含文本、图像、位图,并通过
command参数回调函数。当然按钮也并非一定要执行回调函数(callback function),它也只可以当一个“摆设”,不过这样的按钮是没有“灵魂的”,Button 控件的使用流程如下所示:Button 控件的常营属性如下所示:import tkinter as tk
# 创建窗口
window =tk.Tk()
# 设置回调函数
def callback():
print ("click me!")
# 使用按钮控件调用函数
b = tk.Button(window, text="点击执行回调函数", command=callback).pack()
# 显示窗口
tk.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 | 按钮控件要显示的文本 |
除了 Button 按钮之外,和其类似的按钮还有复选框按钮(Checkbutton)和单选框按钮(Radiobutton),它们分别有着不同语法和使用场景,后续会做详细介绍。
下面通过一组示例对 Button 控件的用法做简单的说明:
程序运行结果如下:import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
# 设置窗口的标题
window.title('C语言中文网')
# 设置并调整窗口的大小、位置
window.geometry('400x300+300+200')
# 当按钮被点击的时候执行click_button()函数
def click_button():
# 使用消息对话框控件,showinfo()表示温馨提示
messagebox.showinfo(title='温馨提示', message='欢迎使用C语言中文网')
# 点击按钮时执行的函数
button = tk.Button(window,text='点击前往',bg='#7CCD7C',width=20, height=5,command=click_button).pack()
# 显示窗口
window.mainloop()

图1:tkinter Button控件
通过上述示例不难看出,Button 控件的作用就是“执行一个函数”,当用户点击按钮时会弹出一个新的对话框,这种操作巧妙地了用户的人机交互体验。因此,按钮控件在 GUI 编程中被广泛的使用。
下面为 Button 控件添加一张背景图片,实现代码如下所示:
程序运行结果如下:import tkinter as tk
from tkinter import messagebox
window = tk.Tk()
# 设置窗口的标题
window.title('C语言中文网')
# 设置窗口的大小
window.geometry('400x300+300+200')
# 当按钮被点击的时候执行click_button()函数
def click_button():
# 使用消息对话框控件,showinfo()表示温馨提示
messagebox.showinfo(title='温馨提示', message='欢迎使用C语言中文网')
# 创建图片对象
im = tk.PhotoImage(file='C:/Users/Administrator/Desktop/按钮.gif')
# 通过image参数传递图片对象
button = tk.Button(window,image=im,command=click_button).pack()
# 启动窗口
window.mainloop()

图2:tkinter Button按钮
扩展:按钮的布局
按钮在主窗口中的布局,通常使用 grid() 函数来完成,该函数以网格状的形式(即行和列)来管理窗口的布局。grid() 布局管理器提供了一个
sticky参数,通过该参数可以设置按钮的方位,该参数默认将控件设置居中,其他参数值有 N/S/W/E(上/下/左/右),而且可以组在一起使用,比如 NW/WE/SE/SW/NE 等,这与anchor参数控制文本的显示位置,有着异曲同工之妙。如下图所示:
图3:按钮方位
值得大家注意的是 grid() 布局方法不能与 pack() 混在一起使用,相关知识在后续内容中还会做针对性讲解。
下面看一组简单的示例:
程序运行结果:import tkinter as tk
from tkinter import messagebox
win = tk.Tk()
win.title("C语言中文网")
win.iconbitmap('C:/Users/Administrator/Desktop/C语言中文网logo.ico')
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('欢迎您到来')
# 使用 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()

图4:控制按钮位置
- 随机文章
- 沈阳 马尔代夫(沈阳居民不可思议!马尔代夫游客兴奋呼喊!)
- 南昌马尔代夫旅游(南昌市民畅游马尔代夫,免除出境麻烦)
- 保定阜平马尔代夫(保定阜平有望成为马尔代夫新航线起点)
- 广州城市马尔代夫(广州市最美马尔代夫,美如度假胜地!)
- 广东马尔代夫午餐(广东度假村为游客打造马尔代夫式午餐)
- 头像马尔代夫沙滩(沉醉于马尔代夫蔚蓝海岸的慢节奏假期)
- 嘉祥马尔代夫泳池(嘉祥马尔代夫度假村推出全新泳池设施)
- 芊寻 马尔代夫(探寻马尔代夫之美 - 芊寻的旅行回忆)
- 承包马尔代夫工程(马尔代夫大型建设项目承包商招标公告)
- 菲诺 马尔代夫(菲诺 马尔代夫:享受无与伦比的海滩度假体验)
- 广西马尔代夫美食(探索广西香格里拉,品尝马尔代夫美食)
- 首航 马尔代夫(马尔代夫:新航线首飞成功!)
- 越南 马尔代夫(越南和马尔代夫:探索两个度假天堂)
- 移动套餐马尔代夫(马尔代夫专属移动套餐,畅享海岛通讯)
- 海边马尔代夫漳州(漳州湾畔度假:仿若置身马尔代夫海岛)
- 演讲马尔代夫视频(探索马尔代夫:梦幻海岛下的绿色奇迹)
- 荥阳马尔代夫酒店(荥阳新增马尔代夫酒店,享受美好假期)
- 甘肃东方马尔代夫(甘肃东方旅游版马尔代夫,美如仙境!)
- 杭州马尔代夫攻略(杭州人也能轻松游马代,快来看攻略!)
- 游客马尔代夫房价(马尔代夫酒店价格飙升,游客愁眉不展)
- 老白 马尔代夫(老白游记:探秘马尔代夫奢华岛屿之旅)
- 马尔代夫上岛飞机(马尔代夫岛上飞机惊险着陆,游客恐慌)
- 孟加拉踢马尔代夫(孟加拉击败马尔代夫,赢得比赛冠军。)
- 贝拉 马尔代夫(贝拉马尔代夫:白沙滩与蓝天交相辉映)
- 马尔代夫伙食如何(重写后的标题:了解马尔代夫美食特色)
- 马尔代夫初次浮潜(探寻马尔代夫神秘海底:首次浮潜之旅)
- 老挝泰国马尔代夫(三国旅游胜地:老挝、泰国、马尔代夫)
- 观音老师马尔代夫(观音老师抵达马尔代夫,开展弘法活动)
- 马尔代夫哪里漂亮(重写后的标题:探秘马尔代夫最美景致)
- 马尔代夫云上公路(马尔代夫建云上高速公路,穿云而过!)
