用Tkinter打造GUI开发工具(15)Tkinter小部件的Button按钮部件

用Tkinter打造GUI开发工具(15)Tkinter小部件的Button按钮部件
在Tkinter中,Button按钮部件也会经常用到,这节我们详细讲解Button部件的属性和用法。
Button小部件是一个标准的Tkinter的部件,用于实现各种按钮。按钮可以包含文本或图像,您可以调用Python函数或方法用于每个按钮。 Tkinter的按钮被按下时,会自动调用该函数或方法。该按钮可以只显示在一个单一字体的文本,但文本可能跨越一个以上的行。此外,一个字符可以有下划线,例如标记的键盘快捷键。默认情况下,使用Tab键可以移动到一个按钮部件。Button按钮方法支持flash()和invoke()。
Button按钮通常用于应用程序窗口,并接受鼠标点击并执行相应的程序。
其语法格式如下。

button=tk.Button ( master, option=value, ... )

参数master 这代表了父窗口。options是这个部件的属性选项列表。
Button部件的参数见表3-3。

在这里插入图片描述
Button部件的通用属性,我们前面介绍过多次,我们主要介绍Button部件特有属性的用法。
command属性指定按钮消息的回调函数,即鼠标左键按下后,Button按钮执行command属性指定的函数。
state属性指定按钮的状态。NORMAL,ACTIVE 或 DISABLED。默认值为NORMAL。如果state的值为DISABLED,Button部件处在不可用状态,即按钮无法点击,也不会执行command属性指定的回调函数。
我们下面看一个按钮示例程序,其中主要演示了带参数的回调函数使用。

# -*- coding: utf-8 -*-
import tkinter as tk  #装载tkinter模块,用于Python3
def hello(x): #带参数函数
    print('Hello '+x)

def hello2():  #不带参数函数
    print('Hello ')
    
root=tk.Tk()  #创建Tkinter主窗口
root.title("Button演示")

b1=tk.Button(root,text="NORMAL B1",
             command=hello2,  #不带参数函数
             activeforeground='red')  
b1.pack(side=tk.LEFT)

b2=tk.Button(root,text="NORMAL B2",
             command=hello('b2'), #带参数函数
             activeforeground='red') 
b2.pack(side=tk.LEFT)

b3=tk.Button(root,text="NORMAL B3",
             command=lambda:hello('b3'),#带参数函数
             activeforeground='red') 
b3.pack(side=tk.LEFT)

b4=tk.Button(root,text="ACTIVE b4",
             command=lambda:hello('b4'),  #带参数函数
             state=tk.ACTIVE,  #按钮激活状态
             activeforeground='red') 
b4.pack(side=tk.LEFT)

b5=tk.Button(root,text="DISABLED b5",
             command=lambda:hello('b5'), #带参数函数
             state=tk.DISABLED,  #按钮禁用状态
             activeforeground='red')

b5.pack(side=tk.LEFT)
print('--下面开始输出鼠标点击按钮操作--')
root.mainloop()     # 进入消息循环

程序运行结果如下图。
在这里插入图片描述
程序运行输出结果:程序开始运行,就执行了b2按钮的回调函数。输出了“Hello b2”,顺序点击按钮b1至b5,输出结果如下。

Hello b2
--下面开始输出鼠标点击按钮操作--
Hello 
Hello b3
Hello b4

我们发现b2按钮回调函数在按钮初始化时就执行了,其它带参数的函数,因加上了“lambda:”,所以初始化时没有执行,只有鼠标点击时,才会输出按钮信息。
b2按钮command的回调函数,带有参数,初始化时就执行过了,再次点击b2按钮,程序没有执行动作。
b5按钮state=tk.DISABLED,所以按钮不可用,也没法鼠标点击操作。
b4按钮state=tk.ACTIVE,程序运行后处在激活状态,文字是红色的(activeforeground=‘red’),鼠标滑过或点击b4按钮,b4按钮恢复到正常状态。
总结一下:Button部件command参数的回调函数,如果函数不带参数,直接使用函数名。如果函数带参数,需要使用lambda:function(参数表)的格式。
Button部件除了用鼠标点击操作外,也可以使用键盘来操作。按键盘“Tab”键,会在默认的第一个按钮上出现一个虚框。在此运行上面按钮演示程序,按“Tab”键,见下图。
在这里插入图片描述
如果再次按键盘“Tab”键,虚框会移动到按钮“NORMAL B2”按钮上。按下键盘上空格键,相当于点击虚框选中的按钮。
与Label部件的不同,Button部件除了有属性外有一些方法。
Button部件的方法见表3-4。
在这里插入图片描述
invoke()方法可以在程序中模拟某个按钮被按下时所执行的回调函数。
flash()方法可以使某个按钮快速在普通和激活状态下闪烁几次。

本文接续作者书中内容,目前写完的部分如下.

Python3下Tkinter高级编程参考_目录

00.1 前言

第一章 Tkinter介绍
1.1 Tkinter介绍
1.2 Tkinter工作原理
1.3 Tkinter类的构成
1.4 Tkinter的窗口类
1.Tk类
2.Toplevel类
1.5 Tkinter的小部件类
1.6 Tkinter的变量类

第二章 Tkinter开发基础
2.1 Tk主窗口
2.2 Toplevel弹出窗口
2.3 Tkinter的小部件
2.4 小部件的标准属性

  1. 维度单位
  2. 坐标系统
  3. 颜色
  4. 字体类型
  5. 对齐方式
  6. 浮雕风格
  7. 位图
  8. 鼠标样式
  9. 图片
    2.4 小部件的pack布局
    2.5 小部件的grid布局
    2.6 小部件的place布局
    2.7 Menu主菜单
    2.8 Menu弹出菜单
    2.9 如何命名窗口小部件类
    2.10 如何命名窗口小部件实例
    2.11 焦点:路由键盘输入

第三章 Tkinter的部件
3.1 Label标签部件
3.2 Frame框架部件
3.3 LabelFrame部件
3.4 Button按钮部件
3.5 Entry部件
3.6 Menubutton部件
3.7 Checkbutton部件
3.8 Radiobutton部件
3.9 Scale部件
3.10 Spinbox部件
3.11 Scrollbar滚动条部件
3.12 Text文本框部件
3.13 Listbox
3.14 Message
3.15 OptionMenu
3.16 PanedWindow
3.17 Canvas

第四章 Tkinter的事件和绑定
4.1 控件绑定事件的级别
4.2 事件序列
4.3 事件类型
4.4 事件修饰符
4.5 键盘的键名
4.6 编写事件类处理程序
4.7 编写事件处理程序的特殊技巧
4.8 虚拟事件

第五章 Tkinter的弹出式对话框
5.1 tkMessageBox信息对话框模块
5.2 tkFileDialog 文件对话框模块
5.3 tkColorChooser颜色选择器模块

第六章 Tkinter主题小部件ttk
6.1 导入ttk模块
6.2 ttk.Style
6.3 ttk.Widget主题小部件
6.4 所有ttk小部件共有的方法
6.5 ttk.Button
6.6 ttk.Checkbutton
6.7 ttk.Combobox
6.8 ttk.Entry
6.9 ttk.Frame
6.10 ttk.Label
6.11 ttk.Labelframe
6.12 ttk.Menubutton
6.13 ttk.Notebook
6.14 ttk.Panedwindow
6.15 ttk.Progressbar
6.16 ttk.Radiobutton
6.17 ttk.Scale
6.18 ttk.Scrollbar
6.19 ttk.Separator
6.20 ttk.Sizegrip
6.21 ttk.Spinbox
6.22 ttk.Treeview

第七章 Tkinter扩展小部件tix
7.1 使用Tix.Tk
7.2 tix.Form
7.3 tix.Balloon

如合作请练习.
编写:独狼荷蒲
QQ:2775205
电话微信:18578755056
Python Tkinter 开发群:524949939
博客:https://me.csdn.net/hepu8

发布了56 篇原创文章 · 获赞 67 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/hepu8/article/details/89875061