Tkinter <Configure>绑定引发窗口与画布持续放大问题咨询
Tkinter窗口与画布持续放大的原因
你遇到的无限放大问题,本质是事件循环触发的连锁反应,具体逻辑如下:
- 未设置
self.geometry("600x400")时,Tkinter窗口没有初始固定尺寸,会根据子组件的"请求大小"自动计算自身初始大小。 - 你的代码里已经给Canvas设置了
pack(fill=tk.BOTH, expand=True),这本来就能让Canvas自动填充整个窗口空间。但额外绑定的<Configure>事件会在窗口尺寸变化时触发config_canvas_size回调,手动把Canvas的宽高设为当前窗口的宽高。 - 这个手动设置会让Canvas的"请求大小"被修改,导致窗口需要重新调整尺寸来容纳Canvas;窗口尺寸变化又会再次触发
<Configure>事件,回调再次修改Canvas大小,形成无限循环,最终表现为窗口和画布持续放大。
而取消注释self.geometry("600x400")后,窗口有了固定的初始尺寸:
- 第一次触发
<Configure>事件时,Canvas被设为窗口的固定宽高,此时Canvas的请求大小和窗口尺寸匹配,不会再触发新的尺寸调整循环,所以程序正常工作。
额外提示
其实你完全不需要这个<Configure>绑定和回调函数,pack(fill=tk.BOTH, expand=True)已经足够让Canvas跟随窗口大小自动变化,删掉绑定代码就能实现响应式效果,还能避免循环问题。
内容的提问来源于stack exchange,提问作者kimhyunju
相关产品推荐
相关产品推荐

