打包在python 3.6框架中的按钮

打包在python 3.6框架中的按钮,python,tkinter,python-3.6,Python,Tkinter,Python 3.6,事实上,我抓伤了我的头真的很严重,我在吸一个简单的东西,我想在一个tkinter框架中包装一个按钮,但问题是,我只看到框架,当我没有包装按钮,如果我包装按钮,我只看到按钮 from tkinter import * root = Tk() frame = Frame(root,bg ='yellow') frame.pack() bottomframe = Frame(root,bg = 'red') bottomframe.pack( side = BOTTOM ) redbutton

事实上,我抓伤了我的头真的很严重,我在吸一个简单的东西,我想在一个tkinter框架中包装一个按钮,但问题是,我只看到框架,当我没有包装按钮,如果我包装按钮,我只看到按钮

from tkinter import *

root = Tk()
frame = Frame(root,bg ='yellow')
frame.pack()

bottomframe = Frame(root,bg = 'red')
bottomframe.pack( side = BOTTOM )

redbutton = Button(frame, text = "Red", fg = "red")
redbutton.pack( side = LEFT)

blackbutton = Button(bottomframe, text = "Black", fg = "black")
blackbutton.pack( side = BOTTOM)

root.mainloop()
这是正确显示我的两个按钮,但不是框架,我知道这是因为我看不到颜色,我一定是做了一些愚蠢和错误的事情,或者我不知道,无论如何,帮助将不胜感激,谢谢并继续编码

框架(实际上,所有小部件)都设计为缩小或扩展以适合其内容。如果帧没有子帧,它将保持配置的大小,但如果添加子帧,它将缩小或增大以适应,除非它受其父帧的约束

假设您希望
frame
占据大部分空间,并且
bottomframe
是底部的一条按钮,则需要为
pack
提供适当的参数才能实现这一点

例如:

frame.pack(fill="both", expand=True)
bottomframe.pack( side = BOTTOM, fill="x")
fill
用于控制小部件如何适应给定的空间。通过将该值设置为“两者”,它指示tkinter使帧在x和y方向上填充其父帧。使用值“x”表示仅在“x”方向填充其空间

expand
用于控制如何分配额外空间。当设置为
True
时,它指示此小部件展开以填充其父窗口中的任何剩余空间。当设置为
False
时,它不会占用任何额外空间


使用
pack
时,通常会有一个小部件将
expand
设置为
True
,但如果要将父部件一分为二,通常会有两个小部件

为什么要创建一个框架?只需使用
root.configure(bg='yellow')
我想要一个框架,因为有一个特定的原因,我会有一些框架不包含相同的内容,这就是为什么blackbutton正在替换框架的位置。你能告诉我们元素的分布情况吗?我希望在整个程序执行过程中,按钮都不会改变,它们会在一个框架内,其他的将在另一个框架中,因为它们将由脚本生成,并在一些端口刷新:)我有这种东西,但在单独的代码中,我有一个宽度和高度的框架集,不是吗/@韵律:设置宽度和高度是不够的。正如我在回答中所说的,一个框架会根据其内容而增长或收缩。一般来说,你永远不需要给一个框架明确的宽度和高度。好吧,那么我怎样才能使我的框架有点“锁定”或设置为特定的大小?可能吗?或者可能有另一个小部件可以实现这一点?谢谢:)显然,在python 3.6中expand是未知的。我遇到了一个错误:/ok没有正确使用它,但是可以锁定帧的大小吗?:)