我正在画布上画一个图片库。当窗口调整大小时,我需要重绘画廊。
我可以绑定<configure>事件以获取调整大小通知。但是通过拖动鼠标调整窗口大小会产生太多事件。我想存储更改并仅在释放鼠标按钮时重绘图库。
问题:我找不到在窗口边框上获取新闻或发布事件的方法。
这是可能的还是边框实际上不是窗口的一部分?
如果用户在窗口边框上单击鼠标,则无法知道用户何时释放鼠标。边框不是窗口的一部分,并且 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)
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |