2017-02-27 71 views
0

即时通讯实际上抓我的头真的很糟糕,我吸了一个简单的事情,我想打包一个tkinter框架中的按钮,但问题是,我只看到框架时,我不,如果我在它收拾按钮,我只看到按钮装在它的按钮...按钮装在一个python 3.6框架

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() 

,这是正确显示我的两个按钮,但没有框架,我知道,因为我没有看到的颜色,我必须做一些愚蠢和错误的或不是我不知道,无论如何帮助将不胜感激,谢谢并继续编码!

+0

你为什么要创建一个框架?只需使用'root.configure(bg ='yellow')' – Jake

+0

我想有一个特定的原因框架,我会有几个框架不包含相同的东西,这就是为什么 – Prosity

+0

会发生什么是blackbutton取代在框架中。你能告诉我们你想如何分配元素吗? – eyllanesc

回答

0

框架(实际上,所有小部件)被设计为缩小或扩大以适应其内容。如果一个框架没有孩子,它仍然是配置的大小,但是如果你添加孩子,它会缩小或增长到合适的位置,除非它被父母约束。

假设你想frame占用了大部分空间,并bottomframe是沿着底部的按钮条,您需要提供适当的参数pack要做到这一点。

例如:

frame.pack(fill="both", expand=True) 
bottomframe.pack(side = BOTTOM, fill="x") 

fill用于控制窗口小部件在给它的空间如何适合。通过将该值设置为“both”,它指示tkinter使框架在x和y方向都填充其父项。使用“x”的值意味着它只在“x”方向上填充它的空间。

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

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

+0

i有这样的事情,但在单独的代码,我有一个框架设置宽度和高度,是不是够了? :/ – Prosity

+0

@Prosity:设置宽度和高度是不够的。就像我在答复中所说的那样,框架会随着内容的增长而缩小或缩小。一般来说,你永远不需要给框架明确的宽度和高度。 –

+0

好吧,所以我怎么能让我的框架排序'锁定'或设置为特定的大小?可能吗 ?或者也许有另一个可以实现这个目标的小部件?谢谢:) – Prosity