当前位置: 首页 > 面试题库 >

如何阻止Tkinter Frame收缩以适合其内容?

丘学海
2023-03-14
问题内容

这是给我麻烦的代码。

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

如果我用标签注释掉行,则框架显示为正确的宽度。但是,添加标签似乎将框架缩小到标签的大小。有办法防止这种情况发生吗?


问题答案:

默认情况下,pack以及grid 缩小或放大一个小部件,以适应其内容
,这是你想要什么的时候99.9%。描述此功能的术语是“几何传播”。还有一个命令以打开几何传播或使用时关闭pack(和类似的一个为grid)。

由于您使用的是pack,因此语法为:

f.pack_propagate(0)

或也许root.pack_propagate(0),取决于您实际要影响的小部件。但是,由于未提供框高,因此其默认高度为一像素,因此您仍然可能看不到内部小部件。要获得所需的全部效果,您需要给包含的框架一个宽度和一个高度。

话虽这么说,绝大多数时候您应该让Tkinter计算大小。当您打开几何传播了你的GUI不会在分辨率的变化反应良好,改变字体等Tkinter的几何管理器(packplacegrid)是非常强大。学会利用这种力量。



 类似资料:
  • 我有一个固定高度和宽度的flexbox容器,里面有一些灵活的行,每个行都包含SVG对象。 当我向一行添加更多SVG时,该行中的其他SVG将收缩以适应容器的宽度。但是,如果我添加更多行,它们不会收缩以适合容器,而是溢出。 我如何才能防止这种行为,而不是让行适当地收缩以适应容器内的情况? 示例代码(第一行显示水平收缩;请注意,下面两行溢出了div页面容器):

  • 问题内容: 我试图弄清楚flexbox的工作原理(理应工作吗?),如下所示: 问题是,当有足够的空间容纳元素时,我会得到一个很好的紧身儿童,它们之间的间距均匀。(第一,顶部div块) 但是,如果没有足够的空间并且儿童中的文字开始换行,则所有内容都会朝着怪异的方向前进- 儿童不再紧密贴合,即使在换行后,flex子童周围也有足够的空间,因为不再合适,实际上环绕操作实际上也没有机会工作(第二个div块)

  • 问题内容: 1:如何使导航div向下扩展或使其高度与父div相同? 问题答案: 简单的方法 您可以使用nav to 和的设置和属性来实现此目的。将容器设置为。 现代方式(Flexbox) IE11 +和所有现代浏览器都支持flexbox。

  • 我试图在CSS3中创建一个灵活的布局,3个盒子互相堆叠。这些框是兄弟姐妹,因此具有相同的父元素。第一个盒子的高度必须适合它的内容。以下两个框的高度将增长以适应各自的内容,直到它们即将溢出其父框。在这种情况下,它们应该收缩,以免溢出。 问题是,我不知道如何防止其中一个收缩的盒子被压碎,如果它的内容相对于另一个收缩的盒子来说是小的。我希望这些框缩小到某一点,不再缩小,比如说相当于两行文本。设置不是一个

  • 问题内容: 是否有仅css的解决方案将图像缩放到边框(保持纵横比)?如果图像大于容器,则此方法有效: 问题答案: 不,没有唯一的CSS双向方式可以做到这一点。您可以添加 对于一个元素,使其始终具有100%的宽度,并自动将其高度缩放为长宽比, 或 反之: 始终缩放到最大高度和相对宽度。为此,您需要确定纵横比是高于还是低于容器,而CSS无法做到这一点。 原因是CSS不知道页面的外观。它会预先设置规则,

  • TL;dr:如何在没有随机文本的情况下将无符号32位整数转换为chars/uint8_t 好的,我愿意为此牺牲几个声誉点。我需要快速将一个4字节的无符号整数转换为数组字节,以便读取/写入/操作我自己结构的二进制文件。 这样我就可以读取一个结构,然后将其用作对象,而不是读取它,为每个更改写入它。 但是当我尝试实现一个函数时,我得到了一个泄漏。指针只是不断在函数范围之外添加值。 主要: 和输出: 在我