frame.grid_propogate(False)工作不正常



下面代码的结果是一个空白窗口:

import tkinter as tk
from tkinter import Tk, Grid, Frame
root = Tk()
root.geometry("70x80")
Grid.rowconfigure(root, index=0, weight=1)
Grid.columnconfigure(root, index=0, weight=1)

topRowFrame= Frame(root)
Grid.rowconfigure(topRowFrame, index=0, weight=1)
Grid.columnconfigure(topRowFrame, index=0, weight=1)
topRowFrame.grid(column=0,row=0)
bookingIdLabelDiag=tk.Label(topRowFrame, text='Booking ID')
bookingIdLabelDiag.grid(column=0, row=0)
topRowFrame.grid_propagate(False)

root.mainloop()

标签文本"预订ID"没有出现。当我注释grid_propopagate行时,它工作得很好。请帮助。

您还没有设置框架的尺寸,所以当您禁用content-fitting时,框架会崩溃。

w.grid_propagate ()通常,所有小部件都会传播它们的尺寸,这意味着它们会调整以适应内容。但是,有时您希望强制一个小部件具有一定的大小,而不管其内容的大小。为此,调用w.grid_propagate(0),其中w是要强制其大小的小部件。

topRowFrame = Frame(root, width=65, height=70,  bg='red')

您所看到的肯定是因为grid_propagate正在工作。它的意思是"不要让框架增大或缩小以适应其内容"。因为你没有给帧指定大小,它会默认为1x1。小部件在那里,但由于框架只有1像素宽和高,你无法看到它们。

如果您给框架一个宽度和高度,或者如果您使用sticky强制框架填充分配给它的空间,它们将显示。

topRowFrame.grid(column=0,row=0, sticky="nsew")

这是一个很好的例子,说明为什么你几乎不应该关闭几何传播。Tkinter非常擅长制作适合自己的小工具。当你关闭它时,你需要更加小心如何让它们可见。

最新更新