如何禁止Tkinter中由Toplevel创建的子窗口被调整大小
resizable(False, False)是Tkinter中禁止Toplevel子窗口调整大小的标准方法,没有特殊的独立API,运行无报错但不生效可按以下方案排查修复:
- 确认代码执行顺序:需在Toplevel实例化完成后、窗口渲染前执行该配置,不要放在主事件循环
mainloop()启动之后,同时检查是否有后续代码修改窗口尺寸属性覆盖了该配置。 - 强制锁定尺寸兜底:如果确认配置执行逻辑无异常,可同时设置窗口的最小、最大尺寸为相同固定值,完全限制拉伸操作,示例代码如下:
self.subWin = tk.Toplevel(parent.mainWin) # 替换为你需要的子窗口固定宽高 fixed_w = 300 fixed_h = 200 self.subWin.minsize(fixed_w, fixed_h) self.subWin.maxsize(fixed_w, fixed_h) # 保留原有resizable配置做双重保险 self.subWin.resizable(False, False)
- 桌面环境兼容适配:如果你使用Linux系统,部分自定义窗口管理器会默认忽略Tk的resizable配置,可额外添加属性配置覆盖窗口管理器规则:
self.subWin.attributes('-type', 'dialog')
内容的提问来源于stack exchange,提问作者Stu
相关产品推荐
相关产品推荐

