'<configure>'回调</configure>的奇怪行为

时间:2013-06-21 01:12:57

标签: tkinter

当我绑定()一个回调时,我遇到了一些奇怪的行为 我正用于包含图像的标签上的<Configure> 我希望调整大小,因为它调整了包含Toplevel的大小。

根据文档,<Configure>回调 应该在用户调整窗口大小时调用 (即Toplevel)。我发现回调是 没有用户交互就被调用。事实上,它似乎是 当我从处理程序中更新图像时调用 响应调整大小,这导致一个烦人的循环 当用户移动(!)窗口时结束。每次通话都有 event.width和/或event.height稍大或稍小, 取决于我如何调整图像大小。几乎就好像 我拨打电话来设置新图像 (Label.configure(image={newImage}))正在触发 回调,但这没有任何意义。

我已经尝试用pdb跟踪它,但我找到的只是一个来电 来自Tkinter.Tk.mainloop(),但没有指出导致它的原因。 我也尝试用一个小的演示来复制它 程序(我可以在这里包括),但不能,所以我希望 有人可能至少能够回答这个问题:

除了用户交互(或我自己的任何显式调用)   什么可能导致调用<Configure>回调?

感谢。

1 个答案:

答案 0 :(得分:1)

只要窗口小部件的大小发生变化,就会触发`事件。它并不局限于交互式大小调整。如果您的绑定更改了窗口小部件的大小,则将再次生成该事件。

根据official tcl/tk documentation

  

配置事件的大小,发送到窗口,   位置或边框宽度更改,有时更改时   在堆叠顺序中的位置。