我正在尝试在 Tkinter 中设置一个简单的 Box 输入表单。我试图将两个输入框并排放置,标签位于其上方,另一个输入框放置在其下方。
这是我得到的最接近的,尽管第一个标签和条目未对齐:
代码:
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()
感谢您的帮助!
您可以使用
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 的图片