我最近遇到了这个问题......我创建了一些框架,当我在运行它之前对它们使用
grid_propagate(False)
时,窗口上的框架是空的。如果我在没有传播功能的情况下闲置运行它,即使我之后调用grid_propagate
方法,也有。
import tkinter as tk
root = tk.Tk()
frame = tk.Frame(root)
text = tk.Text(frame, bg='#000000', fg='#00cc00')
frame.grid(row=0, column=0)
text.grid(row=0, column=0)
frame.grid_propagate(0)
我把具体命令放在注释字符后面。它只对我有用,当我在运行后在空闲状态下分别输入它们时。
当您调用
grid_propagate(0)
时,您是在要求一个小部件尝试达到它所请求的大小,而忽略窗口内的任何内容。下次绘制窗口时,将满足此请求。
因为你没有给框架一个大小,它默认为一个像素宽乘以一个像素高。因此,当您在 IDLE 之外运行程序时,窗口(几乎)是不可见的。这是正确的、预期的行为。由于文本小部件位于这个 1x1 框架内,因此它也是不可见的。
您在 IDLE 中看到的行为是在 IDLE 中交互式运行的副作用。
我相信布莱恩的回答是正确的。我只想补充一点,您必须同时指定高度和宽度才能使框架可见。相信我,否则无论如何都不会出现! 🥺