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

如何将Tkinter中的LabelFrame移至窗口右上角?

解决Tkinter LabelFrame移至右上角的问题

你遇到的问题根源在于:你嵌套了一层中间Frame,并且默认用pack()让这个Frame居中显示——这个Frame的尺寸只会刚好包裹内部的LabelFrame,所以你给LabelFrame加的sticky='NW'根本没作用,因为它的父容器(中间Frame)没有多余空间供它“吸附”到角落。

下面给你两种简单的解决方法:

方案1:简化布局(推荐)

直接把LabelFrame放在主窗口上,用pack()的anchor参数定位到右上角,不需要中间的Frame:

修改后的完整代码:

import tkinter
from tkinter import ttk
from tkinter import messagebox
import os
import openpyxl
from tkinter import *

window = tkinter.Tk()
window.geometry("1200x800")
window.title("Data Entry Form")

# 直接将LabelFrame放在主窗口上,用anchor='ne'定位到右上角
user_info_frame = tkinter.LabelFrame(window, text="User Information")
user_info_frame.pack(anchor='ne', padx=20, pady=10)

first_name_label = tkinter.Label(user_info_frame, text="First Name")
first_name_label.grid(row=0, column=0)
last_name_label = tkinter.Label(user_info_frame, text="Last Name")
last_name_label.grid(row=1, column=0)
last_name2_label = tkinter.Label(user_info_frame, text="Last Name2")
last_name2_label.grid(row=2, column=0)

first_name_entry = tkinter.Entry(user_info_frame)
last_name_entry = tkinter.Entry(user_info_frame)
last_name2_entry = tkinter.Entry(user_info_frame)

first_name_entry.grid(row=0, column=1,padx=5, pady=5)
last_name_entry.grid(row=1, column=1,padx=5, pady=5)
last_name2_entry.grid(row=2, column=1,padx=5, pady=5)

# 设置默认值
first_name_entry.insert(0,"XX")
last_name_entry.insert(0,"YY")

window.mainloop()

方案2:保留中间Frame的修改方式

如果一定要保留中间的Frame,需要调整它的pack()参数让它占满窗口并靠右上,再给LabelFrame的grid()加sticky:

修改这两行代码:

frame = tkinter.Frame(window)
frame.pack(fill='both', expand=True, anchor='ne')  # 修改pack参数,让Frame占满窗口并靠右上

user_info_frame = tkinter.LabelFrame(frame, text="User Information")
user_info_frame.grid(row=0, column=0, padx=20, pady=10, sticky='nw')  # 加sticky='nw'让LabelFrame吸附到Frame的左上角

这样也能让LabelFrame固定在窗口右上角。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:30:03