0

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

根据文档,<Configure>回调应该在用户调整窗口大小(即顶层)时被调用。我发现回调在没有用户交互的情况下被调用。事实上,当我处理程序更新图像以响应调整大小时,它似乎被调用了,这导致了一个恼人的循环,当用户移动(!)窗口时结束。每个调用都有 event.width和/或event.height稍大或稍小,具体取决于我如何调整图像大小。就好像我设置新图像 ( Label.configure(image={newImage})) 的调用触发了回调,但这没有任何意义。

我试过用 pdb 跟踪这个,但我发现的只是一个来自 Tkinter.Tk.mainloop() 的调用,没有任何迹象表明是什么导致了它。我也尝试用一个小的演示程序(我可以在这里包含)复制它,但不能,所以我希望至少有人能够回答这个问题:

除了用户交互(或我自己的代码中的任何显式调用)之外,还有什么可能导致<Configure>调用回调?

谢谢。

4

1 回答 1

1

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

根据官方 tcl/tk 文档

每当窗口的大小、位置或边框宽度发生变化时,有时当它在堆叠顺序中的位置发生变化时,就会向窗口发送 Configure 事件。

于 2013-06-21T01:38:35.440 回答