我最近遇到了这个问题...我创建了一些帧,当我在运行之前对它们使用grid_propagate(False)
时,窗口上的帧是空的。如果我在没有传播函数的情况下使用idle运行它,即使我之后调用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)
我把特定的命令放在一个注解字符后面。它只对我有效,当我运行它之后在空闲中单独输入它们时。
1条答案
按热度按时间xoshrz7s1#
当你调用
grid_propagate(0)
时,你要求一个小部件尝试它请求的大小,忽略窗口内的任何东西。这个请求在下一次绘制窗口时被接受。因为你没有给予框架一个大小,它默认为一个像素宽一个像素高。因此,当你在IDLE之外运行程序时,窗口(几乎)是不可见的。这是正确的,预期的行为。因为文本小部件在这个1x1框架内,它也是不可见的。
您在IDLE中看到的行为是在IDLE中交互运行的副作用。