Tkinter 变量追踪trace()使用r模式

Tkinter 变量追踪trace()使用r模式

Tkinger 变量追踪trace()使用w模式介绍了当Widget控件内容更改时,执行追踪并执行特定函数,其实我们也可以设计当控件内容被读取时,执行追踪并执行特定函数。

Tkinter 变量追踪trace()使用r模式 示例1

增加一个Read按钮,当在Entry中输入数据时Python Shell窗口不显示数据,但是下方的Label将同步显示。主要功能是如果单击了“读取”按钮,系统将发出数据被读取的警告,同时输出所读取的数据。

from tkinter import *

def callbackW(*args):               # 内容被更改时执行
    # xE.get()
    xL.set(xE.get())                # 更改标签内容

def callbackR(*args):               # 内容被读取时执行
    print("Warning:Data is read!")

def hit():                          # 读取数据
    print("Read the data:",xE.get())
    # print("Type is:",type(xE.get()))  # 类型是: <class 'str'>
    # print("Read the data2:",xE.get())
    # print("Read the data3:",xE.get())

# def callback(*args):  # 如果是 def callback(): 则会出错
#     xL.set(xE.get())
#     print("data changed: ",xE.get())   # 在命令行输出当前内容

root = Tk()
root.title("apidemos.com")                                    # 窗口标题

xE = StringVar()                                       # Entry的变量内容
entry = Entry(root,textvariable=xE)                    # 设定Label内容是变量x
entry.pack(pady=5,padx=10)
xE.trace("w",callbackW)                                # 若是有更改执行callbackW
xE.trace("r",callbackR)                                # 若是有被读取执行callbackR

xL = StringVar()                                       # Label的变量内容
label = Label(root,textvariable=xL)
xL.set("Synchronized display")
label.pack(pady=5,padx=10)

btn = Button(root,text="Read",command=hit)             # 创建"读取"按钮
btn.pack(pady=5)

root.mainloop()

Output:

Tkinter 变量追踪trace()使用r模式

若单击Read按钮可以在Python Shell窗口中看到下列执行结果。

Tkinter 变量追踪trace()使用r模式

上述程序的重点是第28行,内容如下。

xE.trace("r",callbackR)                                # 若是有被读取执行callbackR

上述第一个参数是模式,r代表当执行读取时,就自动去执行callbackR函数。也可以自行取函数名称,这个动作称为读取追踪。我们可以通过xE变量类别追踪Widget控件内容被读取时执行的特定动作,本实例是在Python Shell窗口输出“Warning:数据被读取!”和Entry中的内容。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程