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

tkinter:如何让Spinbox显示是否按下了向上或向下按钮,tkinter,Tkinter,在Tcl中,您可以在spinbox命令中使用一个简单的百分比替换,%d,来判断是否按下了向上或向下按钮,如下所示: spinbox .datespin -width 9 -command { set way %d datespin $way %W } 我仍在尝试如何让tkinter中的Spinbox发生同样的事情,它似乎不喜欢%d替换(它会给我语法错误)。到目前为止,我看过的tkinter文档没有任何帮助。有人能告诉我如何让Spinbox显示是否按下了“向上”或“向下”按钮吗?

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

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

我仍在尝试如何让tkinter中的Spinbox发生同样的事情,它似乎不喜欢
%d
替换(它会给我语法错误)。到目前为止,我看过的tkinter文档没有任何帮助。有人能告诉我如何让Spinbox显示是否按下了“向上”或“向下”按钮吗?

在我研究其他内容时看到了这个问题。即使这是一个老问题,我想我还是可以回答它,以防你在别处找不到答案

您必须使用通用小部件“register”方法(即,您可以在任何小部件上调用此方法)将Python函数包装到Tcl包装器中,以便使用百分比替换。(另一方面,为了让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()