tkinter:如何让Spinbox显示是否按下了向上或向下按钮

时间:2016-04-26 23:06:51

标签: tkinter

在Tcl中,您可以在spinbox命令中使用简单的百分号替换%d来判断是按下了向上还是向下按钮,如下所示:

spinbox .datespin -width 9 -command {
    set way %d
    datespin $way %W
}

我仍然试图看看如何在tkinter中使用Spinbox来实现同样的事情,这似乎不像%d替换(它给我语法错误)。到目前为止我看过的tkinter文档没有帮助。有人能告诉我如何让Spinbox显示向上或向下按钮是否被按下了?

1 个答案:

答案 0 :(得分:2)

当我正在研究别的东西时,看到了这个问题。即使这是一个古老的问题,我想如果你还没有在其他地方找到答案,我也可以回答它。

您必须使用通用小部件"注册"方法(即,您可以在任何窗口小部件上调用此方法)将Python函数包装到Tcl包装器中,以便使用百分比替换。 (作为一方,你必须做同样的事情才能在一个Entry小部件中使用validatecommand。)

为了将百分比替换发送到回调,请指定一个元组而不仅仅是可调用元组,并将替换作为元组中的元素(参见下面的示例)。

import tkinter as tk

root = tk.Tk()

def up_or_down(direction):
    print(direction)

tcl_up_or_down = root.register(up_or_down)

spinbox = tk.Spinbox(root, from_=0, to=10, command=(tcl_up_or_down, '%d'))
spinbox.grid()

root.mainloop()

希望这有帮助!