Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter框架容器颜色不可见_Python_Tkinter - Fatal编程技术网

Python Tkinter框架容器颜色不可见

Python Tkinter框架容器颜色不可见,python,tkinter,Python,Tkinter,为什么我看不到带有以下代码的红框 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_butt

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

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()
如果您更改为:

widget_button.pack(padx=10, pady=10)
在调用widget_button.pack(…)时,可以看到框架已经调整了大小


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

有几种方法可以达到你想要的效果,但不清楚你想要什么效果。您可以关闭此“收缩以适应”行为(使用
container\u frame.pack\u propagate(False)
)。或者,您可以在小部件周围添加填充。或者,可以将背景应用于帧的容器。或者您可以打包框架以填充其容器(主窗口),然后确保包含的窗口足够大以露出框架

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

container_frame.pack(side="top", fill="both", expand=True)

在我看来,你需要将容器框架的主控设置为root…奇怪的是,这并没有改变任何事情。对不起,这只是为按钮提供了填充,它没有回答问题。我知道Frame默认情况下会根据调用
container\u Frame
作为实例化参数的小部件的大小调整大小。但是我传递了选项:
width=100
height=120
来覆盖这个行为。因此,我想获得
容器\u框架
以获得此尺寸,并通过颜色查看。谢谢!您说“或者,您可以将背景应用于框架的容器。”。我尝试了
root=Tkinter.Tk(background=“red”)
。那不行,我该怎么做?我还做了
frame\u container.overriderderict()
。本特利4:我不知道我发布答案时在想什么,我完全误导了你。您不希望
覆盖直接
,而是希望
打包传播
。很抱歉造成混乱;我已经更新了我的答案。