为何设置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()
关键修改说明
- 调整约束顺序:先设置
resizable(False, False)锁定调整权限,再设置窗口尺寸 - 添加尺寸强制约束:通过
minsize和maxsize让窗口只能保持1200x900的大小,避免系统自动调整 - 锁定Frame尺寸:对两个Frame调用
pack_propagate(0),防止内部组件间接改变主窗口大小 - 修正变量名重复:将第二个按钮变量名从
login_button改为back_button,避免覆盖
额外提示
如果你的屏幕可用空间(减去任务栏后)不足1200x900,系统会自动缩小窗口以适应屏幕,但此时窗口依然是不可调整的。这种情况下建议将窗口尺寸调整为屏幕支持的大小。
内容的提问来源于stack exchange,提问作者Costache Alin
相关产品推荐
相关产品推荐

