可以尝试在 sash_place 函数调用后加上 pw1.update() 来更新组件。这样可以结束当前事件处理,避免死循环。
例如:def adjust_windows(event):
global Win_height
global Win_width
if (Win_height !=ws.winfo_height()) or (Win_width !=ws.winfo_width()):
heightRadio , widthRadio= ws.winfo_height()/Win_height , ws.winfo_width()/Win_width
print(event.type)
pw1.sash_place(1,int(900*widthRadio),0)#放置中间的空间分割线
pw1.update() # 更新组件
return
还可以尝试使用 pw1.unbind('<Configure>') 方法解除绑定事件,在调用 sash_place 函数后再绑定回去。这样也可以避免死循环。
例如:def adjust_windows(event):
global Win_height
global Win_width
if (Win_height !=ws.winfo_height()) or (Win_width !=ws.winfo_width()):
heightRadio , widthRadio= ws.winfo_height()/Win_height , ws.winfo_width()/Win_width
print(event.type)
pw1.unbind('<Configure>') # 解除绑定
pw1.sash_place(1,int(900*widthRadio),0)#放置中间的空间分割线
pw1.bind('<Configure>', adjust_windows) # 重新绑定
return
|