Tkinter网格管理器

时间:2018-12-04 01:05:26

标签: python tkinter

我正在学习Tkinter,并在构建通用的窗口,框架和所有小部件以了解界面时,遇到一个问题,我不知道为什么它会按原样运行。

我创建了一个包含3个框架的根窗口,每个框架都有一个按钮。该练习的目的是确保框架和根窗口能够正确拉伸。

窗口和框架都可以,但是我注意到第一帧上的按钮居中,而框架2和3上的其他按钮没有居中。

我只是想了解为什么会这样。

代码如下:

import tkinter as tk

MW = tk.Tk()
MW.title("TK Main Window")
MW.config(bg='#8FBC8F',padx=5,pady=5,relief=tk.RIDGE,bd=3)

FRM1 = tk.Frame(MW,bd=3,relief=tk.RIDGE,bg='#1E90FF',padx=10,pady=10)
FRM1.grid(row=0,column=0,sticky=tk.E + tk.W + tk.N + tk.S,padx=5,pady=5)
FRM1.rowconfigure(0,weight=1)
FRM1.columnconfigure(0,weight=1)
bt1 = tk.Button(FRM1, text="FRM1 button") 
#bt1.grid(row=0,column=0,sticky=tk.W)
bt1.grid()


FRM2 = tk.Frame(MW,bd=3,relief=tk.RIDGE,bg='#B0C4DE',padx=10,pady=10)
FRM2.grid(row=1,column=0,sticky=tk.E + tk.W + tk.N + tk.S,padx=5,pady=5)
FRM2.rowconfigure(1,weight=1)
FRM2.columnconfigure(0,weight=1)
bt2 = tk.Button(FRM2, text="FRM2 button") 
bt2.grid()


FRM3 = tk.Frame(MW,bd=3,relief=tk.RIDGE,bg='#FFE4B5',padx=10,pady=10)
FRM3.grid(row=2,column=0,sticky=tk.E + tk.W + tk.N + tk.S,padx=5,pady=5)
FRM3.rowconfigure(2,weight=1)
FRM3.columnconfigure(0,weight=1)
bt3 = tk.Button(FRM3, text="FRM3 button") 
bt3.grid()

MW.rowconfigure(0,weight=1)
MW.rowconfigure(1,weight=1)
MW.rowconfigure(2,weight=1)
MW.columnconfigure(0,weight=1)

MW.mainloop()

这是它的外观:

root window with 3 frames

1 个答案:

答案 0 :(得分:1)

在编写FRM2.rowconfigure(1,weight=1)时,您已经编辑了第二帧(FRM2),因此必须配置该帧的唯一行:FRM2.rowconfigure(0,weight=1)。 最后一帧FRM3.rowconfigure(0,weight=1)也是如此。