Tkinter检查按钮绑定不采用更新的值

时间:2019-04-02 08:15:32

标签: validation checkbox tkinter bind

我定义了两个checkbutton标签:(var是我使用的类,以便我也可以访问外部的变量)

lby = ttk.Checkbutton(var.frame,text="y-direction",variable=var.vel_y)
lbz = ttk.Checkbutton(var.frame,text="z-direction",variable=var.vel_z)
lby.grid(column=1,row=3,sticky=W)
lbz.grid(column=1,row=4,sticky=W)

现在,我将用户单击绑定到任何按钮上,以调用函数options_yz()。

 def options_yz(key):
    print("y"+str(var.vel_y.get()))
    print("z"+str(var.vel_z.get()))
 lby.bind('<Button-1>', options_yz)
 lbz.bind('<Button-1>', options_yz)

但是在我看来,单击按钮会在更改变量值之前调用函数。更改变量后有什么方法可以调用该函数?

例如: var.vel_y和var.vel_z的默认值为0。我单击y方向的复选按钮。我的输出是:

y0
z0

我的实际输出应该是:

y1
z0

接下来,我单击z方向复选框。我的输出是:

y1
z0

我的实际输出应该是:

y1
z1

1 个答案:

答案 0 :(得分:0)

正如acw1668所建议的那样,我没有将功能绑定到用户单击按钮上,而是将其绑定到变量的用户更改上。所以我的代码更改为:

def options_yz(*args):
    print("y"+str(var.vel_y.get()))
    print("z"+str(var.vel_z.get()))
var.vel_y.trace("w", options_yz)
var.vel_z.trace("w", options_yz)

它确实满足我的需求!