为什么我的Button小部件不会垂直扩展

时间:2015-04-29 06:28:51

标签: python tkinter

我熟悉Tkinter,我正在尝试编写一个非常简单的程序,它使用包几何管理器在窗口中显示一个按钮。

我正在尝试使用pack()的各种配置选项,例如expandfillside,并且我遇到了一个特殊的问题。我写了以下代码:

from Tkinter import *

root = Tk()
widget = Button(root, text='text')
widget.pack(expand=YES, fill=BOTH)
root.mainloop()

问题是按钮展开以在水平方向上填充窗口,而不是垂直方向。这与我得到的结果相同,而不是指定fill=BOTH我使用fill=X。此外,如果我指定fill=Y,则按钮不会向任一方向扩展。填充垂直方向似乎出现了问题,我无法弄清楚它可能是什么。

我试图谷歌这个问题,并且令人惊讶地发现其他任何人都没有提到这一点。我正在使用Mac OS X Yosemite并运行python 2.7.5。我还尝试使用python 3.4.1进行编译,但没有看到任何变化。

修改

根据下面的答案和评论,很明显我的代码没有任何问题,因为它似乎适用于其他机器。如果代码中没有错误,是否有人知道在运行上述代码时可能导致按钮不垂直拉伸的原因?

3 个答案:

答案 0 :(得分:7)

这是OSX上本机按钮的一项功能。 OSX上的按钮将是固定高度,不会垂直扩展。除了使用不同的小部件(如标签)之外,您无能为力。

答案 1 :(得分:0)

尝试运行此代码以查看fillexpand

的行为
from Tkinter import *

root = Tk()
root.geometry("500x500")
widget = Button(root, text='text1')
widget.pack(fill=X, expand=1)
widget = Button(root, text='text2')
widget.pack(fill=Y, expand=1)
widget = Button(root, text='text3')
widget.pack(fill=BOTH, expand=1)
root.mainloop()

参数fill也会填充垂直方向

答案 2 :(得分:0)

我也是初学者,您的代码中缺少用于填充的定义几何,如下所示:

from Tkinter import *

root = Tk()
root.geometry("600x400")
widget = Button(root, text='text')
widget.pack(expand=YES, fill=BOTH)
root.mainloop()