调整窗口大小时 tkinter 获取 <ButtonRelease-1>

J-S*_*J-S 2 python tkinter

我正在画布上画一个图片库。当窗口调整大小时,我需要重绘画廊。
我可以绑定<configure>事件以获取调整大小通知。但是通过拖动鼠标调整窗口大小会产生太多事件。我想存储更改并仅在释放鼠标按钮时重绘图库。
问题:我找不到在窗口边框上获取新闻或发布事件的方法。
这是可能的还是边框实际上不是窗口的一部分?

Bry*_*ley 5

如果用户在窗口边框上单击鼠标,则无法知道用户何时释放鼠标。边框不是窗口的一部分,并且 Tkinter 对其创建的小部件之外的事件知之甚少。

最简单的解决方案可能是为重绘添加延迟。在一个<Configure>事件中,取消任何挂起的重绘,并安排一个新的重绘在一两秒内发生。

class Application(...):
    def __init__(self, ...):
        ...
        self._after_id = None
        self.bind("<Configure>", self.schedule_redraw)
        ...

    def schedule_redraw(self, event):
        if self._after_id:
            self.after_cancel(self._after_id)
        self._after_id = self.after(2000, self.redraw)
Run Code Online (Sandbox Code Playgroud)