调用root.resizable()后Tkinter根窗口自动重建致视觉闪烁问题
解决Tkinter调用
root.resizable()后的窗口闪烁问题 方案1:初始化阶段先设尺寸再锁定
别等窗口显示后才调用resizable,在窗口刚创建时就先固定尺寸,再锁定不可调整:
import tkinter as tk root = tk.Tk() # 先指定窗口大小 root.geometry("600x400") # 锁定宽高不可调整 root.resizable(False, False) root.mainloop()
方案2:用wm_attributes直接锁尺寸(Windows平台适用)
Windows下可以通过窗口属性直接禁用调整,避开resizable触发的重绘:
import tkinter as tk root = tk.Tk() root.geometry("600x400") # 禁用窗口大小调整功能 root.wm_attributes("-size", True) root.mainloop()
方案3:延迟锁定+强制渲染
如果必须在窗口显示后调整,先让窗口完成渲染再执行锁定:
import tkinter as tk root = tk.Tk() root.geometry("600x400") def lock_size(): # 强制完成所有待处理的渲染任务 root.update_idletasks() root.resizable(False, False) # 延迟10毫秒执行,确保窗口已经完成绘制 root.after(10, lock_size) root.mainloop()
为啥withdraw()+deiconify()不管用?
这俩方法是用来隐藏再显示窗口,而resizable触发的是窗口内部的重绘重建,不是窗口状态变更,所以解决不了根本问题。
内容的提问来源于stack exchange,提问作者MIku
相关产品推荐
相关产品推荐

