You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tkinter中设置-zoomed属性时防止绕过resizable(False, False)

解决Tkinter窗口设置-zoomed后仍可调整大小的问题

在Gnome窗口管理器(X11环境)下,当窗口处于最大化(-zoomed)状态时,Tkinter的resizable(False, False)设置会被窗口管理器忽略——因为最大化状态下WM会接管窗口尺寸的控制逻辑,导致拖动标题栏或快捷键仍能调整窗口大小。

可以通过以下方式解决:

方法:锁定尺寸+限制最小/最大窗口尺寸

先设置窗口不可调整,再最大化,最后将窗口的最小和最大尺寸设置为当前最大化后的尺寸,彻底锁定窗口大小:

import tkinter as tk

master = tk.Tk()

# 先设置窗口不可调整
master.resizable(False, False)

# 等待窗口可见后设置最大化
master.wait_visibility()
master.attributes("-zoomed", True)

# 更新窗口状态,获取当前最大化后的尺寸
master.update_idletasks()
curr_width = master.winfo_width()
curr_height = master.winfo_height()

# 设置最小/最大尺寸为当前尺寸,彻底锁定
master.minsize(curr_width, curr_height)
master.maxsize(curr_width, curr_height)

master.title("This window should not be resizable")

tk.mainloop()

说明

  • update_idletasks()用于确保窗口尺寸信息已完成更新,避免获取到初始的小窗口尺寸。
  • 将minsize和maxsize设为同一值后,无论窗口管理器如何尝试调整,窗口都无法改变尺寸。
  • 该方法在Ubuntu 22.04+Gnome 42.5+X11环境下可直接生效。

内容的提问来源于stack exchange,提问作者Mandlemankiller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:50:52