3. 固定窗口大小
任务目标
创建一个固定大小的Tkinter窗口,用户无法通过拖拽边框调整窗口尺寸,同时设置窗口的最小和最大尺寸限制。
实现代码
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title("固定窗口大小示例")
# 设置窗口初始尺寸
window_width = 400
window_height = 300
root.geometry(f"{window_width}x{window_height}")
# 禁止调整窗口大小(同时禁止水平和垂直方向)
root.resizable(False, False)
# 设置最小和最大尺寸限制(即使resizable为False,这些限制仍然生效)
root.minsize(300, 200) # 最小尺寸:300x200
root.maxsize(600, 500) # 最大尺寸:600x500
# 添加一个标签用于视觉反馈
label = tk.Label(root, text="窗口大小已固定\n无法通过拖拽调整", font=("Arial", 14))
label.pack(expand=True)
# 进入主事件循环
root.mainloop()
运行方式
- 确保Python环境已安装Tkinter(Python标准库自带,无需额外安装)
- 将上述代码保存为
fixed_window.py - 在终端执行:
python fixed_window.py
验证方法
- 窗口启动后尺寸为400×300像素
- 尝试拖拽窗口边缘或角落,窗口大小不会发生变化
- 最大化按钮呈灰色不可点击状态(Windows/Linux)或无法生效(macOS)
- 若将代码中
resizable(False, False)注释掉,窗口将恢复可调整状态,此时minsize和maxsize限制会生效——可临时取消注释验证尺寸限制范围
关键说明
resizable(False, False) 的两个参数分别控制水平和垂直方向是否可调整。当窗口被设置为不可调整后,minsize 和 maxsize 在大多数平台上不会产生可见效果(因为窗口本身已无法改变尺寸),但保留这些设置可以在某些窗口管理器或后续代码中动态改变 resizable 状态时提供保护边界。若需要同时实现“固定初始尺寸但允许用户在一定范围内调整”,可将 resizable 设为 True,仅依赖 minsize 和 maxsize 来限制调整范围。