Python 2个Tkinter帧和1个不在y轴上扩展

Python 2个Tkinter帧和1个不在y轴上扩展,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我有一个用Tkinter用Python3编写的gui应用程序。我有两个包含按钮的框架,我已经设置了按钮和框架以随窗口展开 但当我展开窗口时,顶部框架在所有方向上展开,而底部框架仅在x轴上展开 这是设置框架和主窗口的代码: # Main Window self.master = master master.title('Calculator') master.columnconfigure(0, weight=1) master.rowconfigure(0, weight=1) # Top F

我有一个用Tkinter用Python3编写的gui应用程序。我有两个包含按钮的框架,我已经设置了按钮和框架以随窗口展开

但当我展开窗口时,顶部框架在所有方向上展开,而底部框架仅在x轴上展开

这是设置框架和主窗口的代码:

# Main Window
self.master = master
master.title('Calculator')
master.columnconfigure(0, weight=1)
master.rowconfigure(0, weight=1)

# Top Frame
topfrm = tkinter.Frame(master, bg='#000000')
topfrm.grid(row=0, column=0, sticky='nsew')
for x in range(4):
    topfrm.columnconfigure(x, weight=1)
for y in range(4):
    topfrm.rowconfigure(y, weight=1)

# Bottom Frame
btmfrm = tkinter.Frame(master, bg='#484848')
btmfrm.grid(row=1, column=0, sticky='nsew')
for x in range(4):
    btmfrm.columnconfigure(x, weight=1)
for y in range(5):
    btmfrm.rowconfigure(y, weight=1)
r = 2
c = 0
for t in self.topfrmbtns:
    btn = tkinter.Button(topfrm, text=self.char(t), width=5, fg='#FFFFFF', bg='#000000', bd=0, command=lambda t=t: self.assmeth(t))
    btn.grid(row=r, column=c, sticky='nsew')
    btn.bind("<Enter>", lambda event, e=btn: e.configure(bg="#A9A9A9"))
    btn.bind("<Leave>", lambda event, l=btn: l.configure(bg="#000000"))
    c += 1
    if c > 3:
        c = 0
        r += 1
for b in self.btmfrmbtns:
    btn = tkinter.Button(btmfrm, text=self.char(b), width=5, fg='#FFFFFF', bg='#808080', bd=0, command=lambda b=b: self.assmeth(b))
    btn.grid(row=r, column=c, sticky='nsew')
    btn.bind("<Enter>", lambda event, e=btn: e.configure(bg="#A9A9A9"))
    btn.bind("<Leave>", lambda event, l=btn: l.configure(bg="#808080"))
    c += 1
    if c > 3:
        c = 0
        r += 1
这是生成按钮的代码:

# Main Window
self.master = master
master.title('Calculator')
master.columnconfigure(0, weight=1)
master.rowconfigure(0, weight=1)

# Top Frame
topfrm = tkinter.Frame(master, bg='#000000')
topfrm.grid(row=0, column=0, sticky='nsew')
for x in range(4):
    topfrm.columnconfigure(x, weight=1)
for y in range(4):
    topfrm.rowconfigure(y, weight=1)

# Bottom Frame
btmfrm = tkinter.Frame(master, bg='#484848')
btmfrm.grid(row=1, column=0, sticky='nsew')
for x in range(4):
    btmfrm.columnconfigure(x, weight=1)
for y in range(5):
    btmfrm.rowconfigure(y, weight=1)
r = 2
c = 0
for t in self.topfrmbtns:
    btn = tkinter.Button(topfrm, text=self.char(t), width=5, fg='#FFFFFF', bg='#000000', bd=0, command=lambda t=t: self.assmeth(t))
    btn.grid(row=r, column=c, sticky='nsew')
    btn.bind("<Enter>", lambda event, e=btn: e.configure(bg="#A9A9A9"))
    btn.bind("<Leave>", lambda event, l=btn: l.configure(bg="#000000"))
    c += 1
    if c > 3:
        c = 0
        r += 1
for b in self.btmfrmbtns:
    btn = tkinter.Button(btmfrm, text=self.char(b), width=5, fg='#FFFFFF', bg='#808080', bd=0, command=lambda b=b: self.assmeth(b))
    btn.grid(row=r, column=c, sticky='nsew')
    btn.bind("<Enter>", lambda event, e=btn: e.configure(bg="#A9A9A9"))
    btn.bind("<Leave>", lambda event, l=btn: l.configure(bg="#808080"))
    c += 1
    if c > 3:
        c = 0
        r += 1
r=2
c=0
对于self.topfrmbtns中的t:
btn=tkinter.Button(topfrm,text=self.char(t),width=5,fg='#FFFFFF',bg='#000000',bd=0,command=lambda t=t:self.assmeth(t))
网格(行=r,列=c,粘性=nsew)
btn.bind(“,lambda事件,e=btn:e.configure(bg=“#a9a9”))
btn.bind(“,lambda事件,l=btn:l.configure(bg=“#000000”))
c+=1
如果c>3:
c=0
r+=1
对于self.btmfrmbtns中的b:
btn=tkinter.Button(btmfrm,text=self.char(b),width=5,fg='#FFFFFF',bg='#808080',bd=0,command=lambda b=b:self.assmeth(b))
网格(行=r,列=c,粘性=nsew)
btn.bind(“,lambda事件,e=btn:e.configure(bg=“#a9a9”))
btn.bind(“,lambda事件,l=btn:l.configure(bg=“#808080”))
c+=1
如果c>3:
c=0
r+=1

您只为master上的零行/列配置行/列。@CurlyJoe我试图配置行1,但它只是在顶部框架中的按钮和底部框架中的按钮之间添加了一个矩形“我试图配置行1”-无法调试没有代码的代码。在我的机器上按预期工作。@CurlyJoe感谢您使用“行配置”为我指明了正确的方向。我在按钮之间得到一个矩形,因为我没有在btm btn代码中将r和c变量重置为零。顶部帧BTN从第2行开始,但btm帧BTN从0开始。如果没有剩下的代码,就无法知道这一点。