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

在Tkinter中向框架添加标签会忽略框架的属性

支智志
2023-03-14
问题内容

我创建了一个固定大小的框架,现在我想在上面添加一些标签和其他小部件。但是我观察到,一旦我在该框架上添加新的小部件,其属性即不受尊重,即大小和默认的背景色设置不受尊重。

from Tkinter import *
tk = Tk()
page1 = Frame(tk, bg="blue", width=100, height=200)
l1 = Label(page1, text='This is label 1')
page1.pack()
l1.pack()
tk.mainloop()

因此,在上面的示例中,如果我注释掉第4行和第6行,则可以看到具有蓝色背景色的固定大小的帧。我的要求是我想用这种颜色在此框架上添加其他一些小部件。


问题答案:

关于宽度和高度不被接受,但对于背景颜色,您是正确的。背景颜色不受影响,但是您看不到背景,因为背景正好适合标签周围。如果在包装时在标签上添加填充物,则会看到背景。

至于宽度和高度…这是Tkinter的一大特色。默认情况下,容器窗口小部件会扩展或折叠以使其大小足以容纳其内容。因此,当您调用时pack,它将导致框架缩小。此功能称为
几何传播

对于 绝大多数
应用程序,这是您想要的行为。在极少数情况下,当您想显式设置容器的大小时,可以关闭此功能。要关闭它,请调用pack_propagategrid_propagate在容器上调用(取决于您在该容器上使用的是网格还是打包),并为其赋予值False

以您的代码为例,您将执行以下操作:

page1.pack_propagate(False)

我的建议是不要这样做,而应该学习如何处理几何体传播。当用户调整窗口大小时,它将使您的GUI表现更好,并且您将不会花费时间来尝试为窗口计算正确的大小。让Tkinter为您做到。



 类似资料:
  • 问题内容: 我使用的图表框架的绘制图表。我需要在每个栏的左侧添加一些字符串。在我的代码中, 总是有两个小节,一个是收入,一个是支出。我想在每个酒吧旁边显示这些字符串。 在下面可以看到我的代码: And my view: I guess below code should add these labels, however, it is not working Update See orange r

  • 问题内容: 我正在尝试清除tkinter中的框架,以便可以写入新内容(刷新信息),但是我无法做到这一点。我知道这些 但是frame.destroy()会完全删除框架。另外两个也不能给我我想要的结果。我需要的只是 清除框架中的每个项目,但框架本身会保留下来 。反正有做吗? 问题答案: 并且只会从视图中删除小部件,不会破坏它们。如果您不打算重复使用这些小部件,那么唯一的选择就是使用方法销毁它们。 为此

  • 我想序列化一个模型,但希望包含一个额外的字段,该字段需要对要序列化的模型实例进行一些数据库查找: 做这件事的正确方法是什么?我看到你可以传递额外的“上下文”到序列化器,正确的答案是在上下文字典中传递额外的字段吗? 使用这种方法,获取所需字段的逻辑将不是序列化程序定义自包含的,这是理想的,因为每个序列化实例都需要。在DRF序列化器文档的其他地方,它说“额外的字段可以对应于模型上的任何属性或可调用的”

  • 问题内容: 我的目标是向具有多个标签的框架添加垂直滚动条。一旦框架内的标签超过框架的高度,滚动条应自动启用。搜索之后,我发现了这个有用的帖子。根据该帖子,我了解到要实现我想要的功能(如果我错了,请纠正我,我是一个初学者),我必须先创建一个,然后在该框架内创建一个并将滚动条粘贴到该框架上好。之后,创建另一个框架并将其作为窗口对象放在画布内。所以,我终于想出了这个: 我做对了吗?有没有更好/更聪明的方

  • 我正在尝试嵌入一个使用另一个框架的框架,这个框架在模拟器中工作得很好,但在iOS设备上会崩溃: DYLD:未加载库:@rpath/framework.framework/frameworkB引用自:/private/var/mobile/containers/bundle/application/b072cd7c-8595-4AE4-a506-26832a0f4402/frameworktest.

  • 我在一个项目中使用Volley框架,我总是需要自己处理重定向以处理标头。 如何处理重定向现在取决于方法和传输层。我希望使用默认的截取(自动选择传输层),而不更改任何截取代码。 一个有效的解决方案是始终使用OkHttp作为传输层(如Volley的问题和贡献中所述),但我想知道是否有一种方法不需要额外的框架。 因此,我正在寻找一种“干净”的方法来禁用自动重定向处理。 编辑: 我更喜欢使用OkHttp,