0

为什么我看不到带有以下代码的红框?

import Tkinter

root = Tkinter.Tk()
root.geometry("220x300")

container_frame = Tkinter.Frame(background = "red", width = 100, height = 120)
container_frame.pack()

widget_button = Tkinter.Button(master = container_frame)
widget_button.pack()

root.mainloop()
4

2 回答 2

5

您看不到它,因为您在按钮和框架之间没有填充。默认情况下,容器“缩小以适应”其内容。即使您向框架添加明确的宽度或高度,它也会缩小以完全适合其子项。

有几种方法可以实现您正在寻找的效果,但不清楚您到底想要什么效果。您可以关闭此“缩小以适应”行为(使用container_frame.pack_propagate(False))。或者,您可以在小部件周围添加填充。或者,您可以将背景应用于框架的容器。或者您可以打包框架以填充其容器(主窗口),然后确保包含窗口足够大以暴露框架。

对于最后一个建议的示例,您可以将一行更改为:

container_frame.pack(side="top", fill="both", expand=True)
于 2012-04-22T12:57:34.737 回答
0

如果您更改为:

widget_button.pack(padx=10, pady=10)

调用 widget_button.pack(...) 时,您可以看到框架已调整大小

在此处输入图像描述

于 2012-04-22T11:00:42.967 回答