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

时间:2016-10-27 12:27:55

标签: python tkinter

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

1 个答案:

答案 0 :(得分:4)

如果用户在窗口的边框上单击鼠标,则无法知道用户何时释放鼠标。边框不是窗口的一部分,而且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)