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

为何设置tkinter窗口geometry为1200x900时无法使用window.resizable(False,False)?

问题解决:Tkinter窗口设置1200x900时resizable失效

当你设置窗口尺寸为1200x900时resizable(False, False)不生效,通常是系统屏幕可用空间限制或Tkinter窗口尺寸约束未完全生效导致的,可通过以下方式解决:

解决方案:添加双重尺寸约束

通过锁定窗口不可调整属性,同时强制窗口的最小/最大尺寸与目标尺寸一致,彻底固定窗口大小:

import tkinter as tk
from tkinter import ttk

def login_admin_page():
 # 创建主窗口
 window = tk.Tk()
 # 先锁定窗口不可调整,再设置尺寸
 window.resizable(False, False)
 window.geometry("1200x900")
 # 强制窗口最小/最大尺寸与目标尺寸一致
 window.minsize(1200, 900)
 window.maxsize(1200, 900)

 # 创建并排的两个Frame
 frame1 = tk.Frame(window, width=600, height=900, bg="#D9D9D9")
 frame2 = tk.Frame(window, width=600, height=900, bg="#F0AFAF")

 # 禁止Frame根据内部组件自动调整大小,避免间接影响主窗口尺寸
 frame1.pack_propagate(0)
 frame2.pack_propagate(0)

 frame1.pack(side="left")
 frame2.pack(side="right")

 # 添加Admin Panel标签
 label = tk.Label(frame1, text="Admin Panel", font=("Inter", 24, "normal"), bg="#D9D9D9", fg="black", justify="left")
 label.place(x=20, y=20, width=146, height=27)
 label.config(anchor="nw", pady=0, padx=0, wraplength=0, height=0, width=0)

 # 添加用户名输入区域
 user_label = tk.Label(frame1, text="Username", font=("Inter", 18, "normal"), bg="#D9D9D9", fg="black", justify="left")
 user_label.place(x=20, y=300, width=123, height=24)
 user_entry = tk.Entry(frame1, font=("Inter", 18, "normal"), bg="white", fg="black", justify="left")
 user_entry.place(x=153, y=300, width=200, height=28)

 # 添加密码输入区域
 pass_label = tk.Label(frame1, text="Password", font=("Inter", 18, "normal"), bg="#D9D9D9", fg="black", justify="left")
 pass_label.place(x=20, y=350, width=123, height=24)
 pass_entry = tk.Entry(frame1, show="*", font=("Inter", 18, "normal"), bg="white", fg="black", justify="left")
 pass_entry.place(x=153, y=350, width=200, height=28)

 # 添加登录按钮
 login_button = tk.Button(frame1, text="Login", font=("Inter", 12), bg="#D9D9D9", fg="black",
                         bd=0, highlightthickness=0, activebackground="#B3B3B3",
                         command=lambda: print("Login button clicked"))
 login_button.place(x=200, y=450, width=82, height=24)

 # 返回按钮(修正重复变量名问题)
 back_button = tk.Button(frame1, text="Back", font=("Inter", 12), bg="#D9D9D9", fg="black",
                         bd=0, highlightthickness=0, activebackground="#B3B3B3",
                         command=lambda: print("Back button clicked"))
 back_button.place(x=20, y=700, width=82, height=24)

 # 启动主循环
 window.mainloop()

login_admin_page()

关键修改说明

  1. 调整约束顺序:先设置resizable(False, False)锁定调整权限,再设置窗口尺寸
  2. 添加尺寸强制约束:通过minsize和maxsize让窗口只能保持1200x900的大小,避免系统自动调整
  3. 锁定Frame尺寸:对两个Frame调用pack_propagate(0),防止内部组件间接改变主窗口大小
  4. 修正变量名重复:将第二个按钮变量名从login_button改为back_button,避免覆盖

额外提示

如果你的屏幕可用空间(减去任务栏后)不足1200x900,系统会自动缩小窗口以适应屏幕,但此时窗口依然是不可调整的。这种情况下建议将窗口尺寸调整为屏幕支持的大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:58:22