Python中Tkinter控件的基本属性(第2节)


1、Tkinter控件的基本属性

Tkinter中每个控件都有着各自不同的功能,即使有些控件功能相似,但它们的适用场景也不同。不同的控件受到各自参数的约束,所有控件既有相同属性,也有各自独有的属性。所有控件都有以下共同的属性,如下表所示:

属性名称 说明
anchor 定义控件或者文字信息在窗口内的位置。"n"(上), "s"(下), "w"(左), "e"(右), "nw"(左上), "sw"(左下), "se"(右下), "ne"(右上)或"center"(居中)分别来定位,e、w、s、n字母分别代表东、西、南、北位置,center代表居中,(注意:上北下南左西右东)
bg或者background bg是background的缩写,用来定义控件的背景颜色,参数值可以颜色的十六进制数(比如:#FF0000、#0000FF),或者颜色英文单词(比如:red、blue)
bitmap 定义显示在控件内的位图文件
bd或者borderwidth 定于控件的边框宽度,单位是像素
command 该参数用于执行事件函数,比如单击按钮时执行特定的动作,可将执行用户自定义的函数
cursor 当鼠标指针移动到控件上时,定义鼠标指针的类型,字符换格式,参数值有crosshair(十字光标)watch(待加载圆圈)plus(加号)arrow(箭头)等
font 若控件支持设置标题文字,就可以使用此属性来定义,它是一个数组格式的参数 (字体,大小,字体样式)
fg或者foreground fg是foreground的缩写,用来定义控件的前景(文字)颜色,也就是字体的颜色
height 该参数值用来设置控件的高度,文本控件以字符的数目为高度,其他控件则以像素(px)为单位
width 该参数值用来设置控件的宽度,文本控件以字符的数目为宽度,其他控件则以像素(px)为单位
image 定义显示在控件内的图片文件
justify 定义多行文字的排列方式,此属性可以是left(靠左对齐)、center(居中对齐)、right(靠右对齐)
padx与pady 定义控件内的文字或者图片与控件边框之间的水平距离与垂直距离
relief 定义控件的边框样式,参数值为flat(平的)/raised(凸起的)/sunken(凹陷的)/groove(沟槽桩边缘)/ridge(脊状边缘)
text 定义控件的标题文字
state 控制控件是否处于可用状态,默认值为"normal"(正常状态),其他可选参数值有"disabled"(禁用状态)和"active"(活动状态,当控件被按下时,会进入这种状态。)

下面演示Tkinter中标签控件(Label)的基本属性设置,具体代码如下:

动手练一练:

# 导入tkinter模块,用于创建GUI应用程序
import tkinter as tk

# 创建一个主窗口对象
app = tk.Tk()
# 设置窗口标题,也就是窗口的名字
app.title("控件的基本属性示例")
# 设置窗口大小,这里的乘号不是“*”,而是小写英文字母“x”
app.geometry("500x600")
# 创建第一个标签控件(Label)
label2 = tk.Label(app,text="我是第一个标签",
    # 定义背景颜色
    bg="#d3fbfb",
    # 定义字体的颜色
    fg="red",
    # 添加文本字体格式font(字体,字号,字体样式)
    # 字体样式可以是bold(加粗)、italic(斜体)、underline(下划线)及overstrike(删除线)
    font=("宋体", 32, "bold italic underline"),
    # 设置标签内容区域大小,以字符数目为单位
    width=20, height=2,
    # 当鼠标指针移动该控件上时,显示"待加载圆圈"
    cursor="watch")
# 将标签控件添加到窗口中,并定义控件之间的垂直距离为30像素
label2.pack(pady=30)

# 创建第二个标签控件(Label)
label3 = tk.Label(app,text="我是第二个标签",
    # 定义背景颜色
    bg="#d3fbfb",
    # 定义字体的颜色
    fg="red",
    # 添加文本字体格式font(字体,字号,字体样式)
    # 字体包括宋体、楷体、黑体、微软雅黑等
    font=("楷体", 32),
    # 设置标签内容区域大小,以字符数目为单位
    width=20, height=2,
    # 定义文字与边框之间的水平距离为10像素,垂直距离为15像素
    padx=10, pady=15, 
    # 定义边框宽度为10像素
    borderwidth=10,
    # 设置文字显示在标签控件的左侧      
    anchor="w",
    # 当鼠标指针移动该控件上时,显示"十字光标"
    cursor="crosshair",
    # 设置边框的样式(凹陷式)
    relief="sunken")
# 将标签控件添加到窗口中
label3.pack()

# 开启主循环,让窗口处于显示状态
app.mainloop()

执行以上代码,运行结果如下图:

2、Tkinter控件的颜色设置

当在tkinter中设置颜色时(设置背景颜色或者字体颜色),可以用两种表示颜色的方式:一种是颜色的英文名称,比如“red”,“green”;另一种是颜色的十六进制形式,比如“#FF0000”。

这种十六进制形式相当于:“#”+R的十六进制+G的十六进制+B的十六进制。比如(255, 255, 255)是纯白,转换成十六进制形式就变成了#FFFFF。

常见的颜色名称和它们的十六进制颜色代码

white:白色 (#FFFFFF)

black:黑色 (#000000)

red:红色 (#FF0000)

green:绿色 (#00FF00)

blue:蓝色 (#0000FF)

yellow:黄色 (#FFFF00)

purple:紫色 (#800080)

pink:粉色 (#FFC0CB)

orange:橙色 (#FFA500)

gray:灰色 (#808080)

3、Tkinter控件的command属性介绍

在Python软件程序开发中,GUI通常由窗口、控件和事件处理器组成。窗口是程序的主界面,可以包含多个控件,例如按钮(Button)、标签(Label)、文本输入框(Entry)等。控件是用户与程序交互的组件,用户可以通过控件来输入信息、执行操作等。事件处理器用于捕获用户的操作,例如点击按钮、输入文本等,然后执行相应的操作或更新界面。command属性是Tkinter中最为重要的属性,主要是为响应鼠标单击事件触发运行程序所设定的。

Tkinter中command属性的作用是为按钮、菜单等组件绑定回调函数,用户操作该组件时会触发相应的函数执行。例如,在创建一个按钮(Button)控件时,可以通过command参数指定按钮被点击时要执行的回调函数。例如:

动手练一练:

# 导入tkinter模块,用于创建GUI应用程序
import tkinter as tk
from tkinter import messagebox

# 创建一个主窗口对象
app = tk.Tk()
# 设置窗口标题,也就是窗口的名字
app.title("command属性设置示例")
# 设置窗口大小,这里的乘号不是“*”,而是小写英文字母“x”
app.geometry("300x300")

# 定义对话框函数
def showmessage():
    # 弹出一个提示对话框
    messagebox.showinfo("提示", "这是一个提示对话框")
# 创建按钮控件(Button),点击后会弹出一个提示对话框
# command参数用来执行按钮关联的回调函数。当按钮被点击时,会执行showmessage()函数
showmenu = tk.Button(app, text="点击后会弹出提示对话框", command=showmessage)
# 将按钮控件添加到窗口中,设置上下控件的间距为5个像素
showmenu.pack(pady=5)

# 开启主循环,让窗口处于显示状态
app.mainloop()

执行以上代码,当用户点击按钮时,Tkinter将自动调用showmessage()并执行其中的代码,从而弹出一个提示对话框。这里需要注意的是,指定给command参数的函数必须写成“command=showmessage”,showmessage函数不能带有括号,如果写成“command=showmessage()”则在运行代码创建控件时就会直接调用该函数,而不是在点击按钮触发事件时才调用。

如果需要在传递给command参数的函数中使用参数,可以通过定义一个lambda匿名函数来实现。例如:

动手练一练:

import tkinter as tk
from tkinter import messagebox

# 创建一个主窗口对象
app = tk.Tk()
# 设置窗口标题,也就是窗口的名字
app.title("command属性设置示例")
# 设置窗口大小,这里的乘号不是“*”,而是小写英文字母“x”
app.geometry("300x300")

# 定义对话框函数
def showmessage(name):
    # 弹出一个提示对话框
    messagebox.showinfo("提示", f"你好,我的名字是{name}")
# 创建按钮控件(Button),点击后会弹出一个提示对话框
# command参数用来执行按钮关联的回调函数。当按钮被点击时,会执行showmessage()函数
showmenu = tk.Button(app, text="点击后会弹出提示对话框", command=lambda: showmessage("张三"))
# 将按钮控件添加到窗口中,设置上下控件的间距为5个像素
showmenu.pack(pady=5)

# 开启主循环,让窗口处于显示状态
app.mainloop()

上面的例子中,我们使用了一个lambda函数将参数“张三”传递给showmessage()函数。这样,当用户点击按钮时,Tkinter将自动调用lambda函数,并在其中执行showmessage("张三")语句,从而弹出一条张三的介绍信息。

4、lambda函数介绍

lambda函数是一种被称为匿名函数的特殊函数形式,它可以在不定义函数名的情况下快速创建简单的函数。‌在Python中,lambda函数是一种简洁的匿名函数,在程序开发中经常会用到‌,包括排序操作、映射操作、作为回调函数传递给高阶函数以及简化代码和提高可读性。

lambda函数的基本语法如下:

lambda 参数: 表达式

其中,lambda函数的“参数”,可以是零个或多个参数,用逗号分隔。“表达式”就是在lambda函数被调用时要执行的计算逻辑。参数列表和表达式之间用冒号隔开。

lambda函数与普通函数不同,lambda函数没有函数名,并且函数返回值由“表达式”计算结果自动返回。例如:

动手练一练:

add = lambda x, y: x + y

print(add(2, 3))  # 输出:5

以上是一个简单的lambda函数代码,该函数接受两个参数并直接返回它们的和,而不需要调用return语句。上面的例子中可以看出,lambda函数具有简洁性和灵活性,在Python编程中是一个非常有用的函数。