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