Python 为两个不同的框架设置单独的网格

Python 为两个不同的框架设置单独的网格,python,tkinter,tkinter-layout,Python,Tkinter,Tkinter Layout,我想要一个包含两个框架的窗口。顶部框架包括五个标签供用户输入。底部框架包括两个按钮。我得到了这个结果: 很明显,按钮的位置是错误的。在我看来,按钮的网格不工作 这是我的密码: frame1 = Frame(master).grid(row=0, sticky="ew") frame2 = Frame(master).grid(row=1, sticky="ew") Label(frame1, text="game name").grid(row=0, column=0) Label(fram

我想要一个包含两个框架的窗口。顶部框架包括五个标签供用户输入。底部框架包括两个按钮。我得到了这个结果:

很明显,按钮的位置是错误的。在我看来,按钮的网格不工作

这是我的密码:

frame1 = Frame(master).grid(row=0, sticky="ew")
frame2 = Frame(master).grid(row=1, sticky="ew")

Label(frame1, text="game name").grid(row=0, column=0)
Label(frame1, text="env").grid(row=1, column=0)
Label(frame1, text="event_source").grid(row=2, column=0)
Label(frame1, text="event_name").grid(row=3, column=0)
Label(frame1, text="game_id").grid(row=4, column=0)

e1 = Entry(frame1).grid(row=0, column=1)
e2 = Entry(frame1).grid(row=1, column=1)
e3 = Entry(frame1).grid(row=2, column=1)
e4 = Entry(frame1).grid(row=3, column=1)
e5 = Entry(frame1).grid(row=4, column=1)

Button(frame2, text='Quit', command=master.destroy).grid(row=0, column=0)
Button(frame2, text='Save', command=lambda: self.show_entry_fields(e1, e2, e3, e4, e5)).grid(row=0, column=3)

您不应该在定义框架的同一行上定义网格细节

frame1 = Frame(master).grid(row=0, sticky="ew")
None
返回到
frame1

而是把它写成

frame1 = Frame(master)
frame1.grid(row=0, sticky="ew")

这也适用于其余的标签和框架。最好的做法是始终单独定义它,即使有时看起来可以侥幸逃脱。

尝试打印
frame1
frame2
的值。他们不是你想象的那样。非常感谢。