【问题标题】:Tkinter checkbutton bind does not take the updated valueTkinter checkbutton bind 不取更新值
【发布时间】:2019-04-02 17:29:51
【问题描述】:

我定义了两个检查按钮标签:(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

【问题讨论】:

  • 看看trace() tkinter 变量的函数。
  • 完美!这就像一个魅力!非常感谢:)
  • 你为什么使用bind而不是checkbutton的command属性?
  • 这也有效。我对 tkinter 很陌生,所以我对所有常见功能都不是很熟悉 :)

标签: validation checkbox tkinter bind


【解决方案1】:

正如 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)

它正是我需要的!

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2018-10-20
    • 2023-03-14
    相关资源
    最近更新 更多