簡體   English   中英

如何讓網格布局中的兩個小部件相互對齊?

[英]How to get two widgets in grid layout to be flush against each other?

我正在嘗試在 tkinter window 中構建一個消息傳遞系統,其中我正在使用網格布局。 我想在頂部放置一個 label 用於消息,其下方有一個條目供人們輸入; 因此,我希望它們完全沖洗。 我發現應該這樣做的 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,但顯然這不起作用。 感謝所有幫助。

代碼生成什么

編輯:

這是完整的代碼:

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()

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()

現在:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM