Python Tkinter pack布局文本对齐异常 调整时标签消失问题

问题根源
你的代码有个核心逻辑错误:Entry输入框的父控件被错误设置成了提示文本Label。
Label是文本展示控件,不是容器控件,把Entry放到Label内部后,输入框会直接覆盖Label的文本区域,调整对齐参数时Label被进一步挤压遮挡,就会出现“标签消失”的现象。
你要的“提示文本在上、输入控件在下”是平级的上下排布关系,两个控件应该共同挂载到主窗口下,按顺序调用pack即可自动按从上到下的顺序排列。
修复后的可运行代码
from tkinter import Button, Entry , Label, Tk from tkinter.constants import END import pyperclip import string password_chars = string.ascii_letters + string.digits + string.punctuation class gui: def __init__(self): self.window = Tk() self.window.title("Password Generator") self.window.geometry("300x300") # 标题 label_title = Label(self.window, text="Password Generator", fg="#800000",font=("Inter", 15, "bold")) label_title.pack(pady=15) # 长度提示标签 self.label = Label( self.window, text="Enter Password Length",font=("Inter")) self.label.pack(pady=20) # 长度输入框,父组件改为主窗口,和标签平级 self.length_entry_box = Entry(self.window, width=24) self.length_entry_box.pack(padx=10, pady=15) if __name__ == '__main__': gui().window.mainloop()
补充提示
- 如果要对控件做分组布局,用
Frame或者LabelFrame当容器,不要用Label、Button这类功能控件作为其他控件的父载体。 - pack布局默认按调用pack的先后顺序从上到下排列控件,父组件设置正确的前提下,不需要额外加对齐参数就能实现你要的排布效果。
内容的提问来源于stack exchange,提问作者FU_Student - 42069
相关产品推荐
相关产品推荐

