Python Tkinter Label用grid覆盖控件、pack对齐异常怎么解决?
问题根因
所有Label都指定了相同的row=0, column=0参数,全部堆叠在grid布局的同一个单元格内,才会出现覆盖问题。
方案1:修复grid布局实现需求
只需将行号和循环索引绑定,每生成一个Label自动顺延行号,同时添加sticky="nw"保证Label靠单元格左上角对齐:
for index, app in enumerate(apps): label = tk.Label(frame, text=app.split('/')[-1:][0] + "\n", bg="#1c1c1c", padx=5, pady=5, font=("Helvetica 12 bold"), fg="white") label.grid(row=index, column=0, sticky="nw")
方案2:使用pack布局实现需求
pack默认居中是因为没有指定对齐锚点,只需设置anchor="nw"即可让所有Label从父容器左上角开始依次向下排列:
for app in apps: label = tk.Label(frame, text=app.split('/')[-1:][0] + "\n", bg="#1c1c1c", padx=5, pady=5, font=("Helvetica 12 bold"), fg="white") label.pack(anchor="nw")
如果需要Label横向占满整个frame宽度避免错位,可以追加fill="x"参数:label.pack(anchor="nw", fill="x")
内容的提问来源于stack exchange,提问作者Just A Penguin
相关产品推荐
相关产品推荐

