【问题标题】:Tkinter grid managerTkinter 网格管理器
【发布时间】:2019-05-05 08:46:11
【问题描述】:

我正在学习 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()

这是它的外观:

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    当你写FRM2.rowconfigure(1,weight=1)时,你已经编辑了第二帧(FRM2),所以你必须配置这个帧的唯一行:FRM2.rowconfigure(0,weight=1)。 最后一帧也是如此:FRM3.rowconfigure(0,weight=1)

    【讨论】:

    • 谢谢。我感觉它必须与行有关,我只是对根窗口中的行感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多