Python GUI开发必看:Tkinter Button控件使用详解

Button(按钮)组件用于实现各种各样的按钮。

Button组件可以包含文本或图像,你可以将一个Python的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。

Button组件仅能显示单一字体的文本,但是文本可以跨域多行。

另外,还可以为其中的个别字符加上下划线(例如用于表示键盘快捷键)。

默认情况下,tab按键被用于在按钮间切换。

何时使用Button组件?

简而言之,Button组件是用于让用户说:"干!",通过按钮上的文字或图像让用户清楚按下去是干什么用的。Button组件常常被用于工具栏、应用程序窗口。

Checkbutton和Radiobutton组件更适合做数据输入按钮使用。

用法

普通的按钮是非常简单易用的。你所需要做的就是指定Button的内容(文本、位图或图片),并且关联当按钮按下时应该调用的函数或方法。

python 复制代码
from tkinter as tk


root = tk.Tk()


def callback():

      print("爷爷在此")



b = tk.Button(root, text='者行孙', command=callback)

b.pack()


tk.mainloop()

如果一个按钮没有相关联的函数或方法,那么它就形同虚设。

你可能在开发程序的过程中会使用到这样的按钮,在这种情况下,更好的方法是禁用这些按钮,从而避免导致你的测试用户产生疑惑。

python 复制代码
B = tk.Button(root, text='不能按我', state=tk.DISABLED)

如果你没有指定Label的大小,那么Label的尺寸是正好可以容纳其内容,你可以使用padx和pady选项在Button的内容和边框间添加额外的间距。

当然你可以通过height和width选项来明确设置Button的大小:

如果你显示的文本,那么这个两个选型是以文本为单位定义Button的大小;

如果你显示的是位图或图像,那么它们以像素为单位(或者其他屏幕单元)定义Button大小。

对于内容为文本的Button组件,你可以使用像素为单位指定Button的尺寸,不过这需要一些技巧,这里提供一个方法给大家参考。

python 复制代码
f = tk.Frame(root, height=64, width=64)

f.pack_propagete(0)

f.pack()



b = tk.Button(f, text='你过来啊', command=callback)

b.pack(fill=tk.BOTH, expand=1)

Button可以显示多行文本,你可以直接使用换行符或者使用wraplength选项来实现。

当文本换行的时候,你可以使用anchor和justify以及padx选项来使得文本如你所希望的显示出来。

python 复制代码
b = tk.Button(f, text=longtxt, anchor=tk.W, justify=tk.LEFT, padx=2)

为了使一个普通的按钮保持被按下的状态,例如你希望通过某种方式实现一个工具箱(像Photoshop左侧的工具栏按钮,按下时会保持凹下去,说明你正在使用此工具),你可以简单的将relief选项的默认值RAISED改为SUNKEN。

python 复制代码
b.config(relief=tk.SUNKEN)

在早期版本的tkinter中,image选项会覆盖text,。也就是说如果你同时指定了两个选项,那么只有image选项会被显示。

但是新的tkinter中,你可以使用compound选项设置二者的混合模式。例如通过设置compound=tk.CENTER使得文字位于图片上方。

python 复制代码
b = tk.Button(root, text='你过来啊', image=photo, compound=tk.CENTER)

通过LEFT、RIGHT、TOP和BOTTOM则可以设置文字在图像的旁边显示。


相关推荐
闲人编程2 小时前
Python在网络安全中的应用:编写一个简单的端口扫描器
网络·python·web安全·硬件·端口·codecapsule·扫描器
Mr_Xuhhh5 小时前
GUI自动化测试--自动化测试的意义和应用场景
python·集成测试
2301_764441335 小时前
水星热演化核幔耦合数值模拟
python·算法·数学建模
循环过三天5 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
Q_Q5110082855 小时前
python+django/flask的眼科患者随访管理系统 AI智能模型
spring boot·python·django·flask·node.js·php
SunnyDays10117 小时前
如何使用Python高效转换Excel到HTML
python·excel转html
Q_Q5110082857 小时前
python+django/flask的在线学习系统的设计与实现 积分兑换礼物
spring boot·python·django·flask·node.js·php
Q_Q5110082858 小时前
python+django/flask的车辆尾气检测排放系统-可视化大屏展示
spring boot·python·django·flask·node.js·php
汤姆yu8 小时前
2026版基于python大数据的旅游可视化及推荐系统
python·旅游·大数据旅游
angleoldhen8 小时前
简单的智能数据分析程序
python·信息可视化·数据分析