Tkinter - 并排和底部框架

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

我正在尝试在 Tkinter 中设置一个简单的 Box 输入表单。我试图将两个输入框并排放置,标签位于其上方,另一个输入框放置在其下方。

这是我得到的最接近的,尽管第一个标签和条目未对齐:

enter image description here

代码:

def login_selection(self):
    loginf = tk.Frame(master=self,relief=RAISED,borderwidth=1)
    loginf.grid(row=2,column=0)
    userf = tk.Frame(master=loginf, borderwidth=1)
    serverf = tk.Frame(master=loginf,borderwidth=1)
    userf.pack()
    userl = tk.Label(master=userf, text="Username")
    usere = tk.Entry(master=userf)
    passl = tk.Label(master=userf, text="Password")
    passe = tk.Entry(master=userf)
    userl.pack(side=TOP)
    usere.pack(side=LEFT)
    passl.pack(side=TOP)
    passe.pack(side=LEFT)

    serverf.pack(side=BOTTOM)
    serverl = tk.Label(master=serverf, text="Server")
    servere = tk.Entry(master=serverf)
    serverl.pack()
    servere.pack()

感谢您的帮助!

python tkinter
1个回答
0
投票

您可以使用

object.grid()
方法来组织您的 GUI。

def login_selection(self):
    loginf = tk.Frame(master=self, relief=RAISED, borderwidth=1)
    loginf.grid(row=2, column=0)

    # User Frame
    userf = tk.Frame(master=loginf, borderwidth=1)
    userf.pack()
    userl = tk.Label(master=userf, text="Username")
    usere = tk.Entry(master=userf)
    passl = tk.Label(master=userf, text="Password")
    passe = tk.Entry(master=userf, show="*")

    userl.grid(row=0, column=0, padx=2.5, pady=2.5, sticky="e")
    usere.grid(row=1, column=0, padx=2.5, pady=2.5)
    passl.grid(row=0, column=1, padx=2.5, pady=2.5, sticky="e")
    passe.grid(row=1, column=1, padx=2.5, pady=2.5)

    # Server Frame
    serverf = tk.Frame(master=loginf, borderwidth=1)
    serverf.pack(side=BOTTOM)
    serverl = tk.Label(master=serverf, text="Server")
    servere = tk.Entry(master=serverf)

    serverl.pack()
    servere.pack()

object.grid()
使用行和列,而不是像
TOP
BOTTOM
那样设置位置。这为 GUI 元素的位置提供了更多变化的机会。这是 GUI 的图片: 更新后的 GUI 的图片

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