我正在学习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()
这是它的外观:
答案 0 :(得分:1)
在编写FRM2.rowconfigure(1,weight=1)
时,您已经编辑了第二帧(FRM2
),因此必须配置该帧的唯一行:FRM2.rowconfigure(0,weight=1)
。
最后一帧FRM3.rowconfigure(0,weight=1)
也是如此。