我最近遇到了这个问题...我创建了一些帧,当我在运行它之前使用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)
我将特定命令放在注释char后面。它只适用于我,当我在运行它后在空闲中单独输入它们时。
答案 0 :(得分:1)
当您致电grid_propagate(0)
时,您要求小部件尝试成为其请求的大小,忽略窗口内的任何内容。下次绘制窗口时,此请求即可兑现。
因为你没有给框架一个尺寸,它默认为一个像素宽一个像素高。因此,当您在IDLE之外运行程序时,窗口(几乎)不可见。这是正确的预期行为。由于文本小部件位于此1x1框架内,因此它也是不可见的。
您在IDLE中看到的行为是在IDLE中以交互方式运行的副作用。