Tkinger 变量追踪trace()使用w模式

Tkinger 变量追踪trace()使用w模式

了解Tkinter 变量 get()与set()的变量设置后,我们可以利用变量设置追踪Widget控件,当其内容更改时,让程序执行callback函数。

Tkinger 变量追踪trace()使用w模式 示例1

设计当Widget控件Entry内容改变时在Python Shell窗口中输出apidemos.com

from tkinter import *

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

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

xE = StringVar()                       # Entry的变量内容
entry = Entry(root,textvariable=xE)    
entry.pack(pady=5,padx=10)
xE.trace("w",callback)                 # 若有更改则执行callback

root.mainloop()

输出:

Tkinger 变量追踪trace()使用w模式

当看到上述窗口输出时,同时可以在Python Shell窗口中同步看到下列输出。

Tkinger 变量追踪trace()使用w模式

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

xE.trace("w",callback)                 # 若有更改则执行callback

上述第一个参数是模式,w代表当有执行写入时,就自动去执行callback函数。也可以自行取函数名称,这个动作称为变动追踪。我们可以通过xE变量类别追踪Widget控件内容的改变时执行特定动作,本实例是在Python Shell窗口中输出Entry的内容。上述程序的另一个重点是第4行,内容如下。

def callback(*args):

后面的课程将说明上述*args参数的含义。

Tkinger 变量追踪trace()使用w模式 示例2

扩充上述实例,同时在Entry控件下方建立Label控件,当在Entry中有输入时,同时在下方的Label控件中显示。

from tkinter import *

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)    
entry.pack(pady=5,padx=10)
xE.trace("w",callback)                 # 若有更改则执行callback

xL = StringVar()
label = Label(root,textvariable=xL)
xL.set("Synchronized display")
label.pack(pady=5,padx=10)

root.mainloop()

输出:

Tkinger 变量追踪trace()使用w模式

当看到上述窗口输出时,同时可以在Python Shell窗口中看到下列输出。

Tkinger 变量追踪trace()使用w模式

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程