如何使网格布局中的两个小部件彼此齐平?

问题描述 投票:0回答:1

我正在尝试在tkinter窗口中构建消息传递系统,在其中使用网格布局。我想在邮件的顶部放置一个标签,并在其下方放置一个条目供人们输入;因此,我希望它们完全冲洗。我发现应该执行此操作的pady和ipady,但即使将它们都设置为0:

Label(mainframe, background='white', text='asdasdasdasdasd', anchor=W, justify=LEFT, bd=1, relief='solid').grid(column=1, row=3, sticky=(W,E), columnspan=3, pady=0, ipady=0,padx=0,ipadx=0)
Entry(mainframe, background='white', bd=1, relief='sunken').grid(column=1, row=4, sticky=(W,E), columnspan=3, pady=0, ipady=0, padx=0,ipadx=0)

代码生成下面的图像,元素之间仍然有空格。不知道如何解决这个问题-我所有的谷歌搜索告诉我,我需要做的只是将pady和ipady设置为0,但是显然这是行不通的。感谢所有帮助。

What the code generates

编辑:

这是完整的代码:

from tkinter import *

root = Tk()
root.title("title")

mainframe = Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)


Label(mainframe, text='Left Label').grid(column=1, row=1, sticky=(W, E), rowspan=2)
Label(mainframe, background='white', text='asdasdasdasdasd', anchor=W, justify=LEFT, bd=1, relief='solid').grid(column=1, row=3, sticky=(W,E), columnspan=3, pady=0, ipady=0,padx=0,ipadx=0)
Entry(mainframe, background='white', bd=1, relief='sunken').grid(column=1, row=4, sticky=(W,E), columnspan=3, pady=0, ipady=0, padx=0,ipadx=0)
Label(mainframe, text="Center Area").grid(column=2, row=1, sticky=W, rowspan=2)

Label(mainframe, text="Right Label").grid(column=3, row=1, sticky=W, rowspan=2)

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)

root.mainloop()
python tkinter label spacing
1个回答
0
投票

您上次使用了for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)。这将在mainframe中添加每个小部件的填充。

最快,最简单的方法,不更改其他小部件的填充。只需更改代码的顺序:

from tkinter import *

root = Tk()
root.title("title")

mainframe = Frame(root)
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)


Label(mainframe, text='Left Label').grid(column=1, row=1, sticky=(W, E), rowspan=2)

Label(mainframe, text="Center Area").grid(column=2, row=1, sticky=W, rowspan=2)

Label(mainframe, text="Right Label").grid(column=3, row=1, sticky=W, rowspan=2)

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)

Label(mainframe, background='white', text='asdasdasdasdasd', anchor=W, justify=LEFT, bd=1, relief='solid').grid(column=1, row=3, sticky=(W,E), columnspan=3, pady=0, ipady=0,padx=0,ipadx=0)
Entry(mainframe, background='white', bd=1, relief='sunken').grid(column=1, row=4, sticky=(W,E), columnspan=3, pady=0, ipady=0, padx=0,ipadx=0)

root.mainloop()

现在:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.