为什么我的按钮部件无法垂直展开

5

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

我正在尝试使用pack()的各种配置选项,例如expandfillside,但遇到了奇怪的问题。我编写了以下代码:

from Tkinter import *

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

问题在于该按钮在水平方向上扩展以填充窗口,但不在垂直方向上扩展。如果我使用fill=X而不是指定fill=BOTH,则会得到相同的结果。此外,如果我指定fill=Y,则按钮在任何方向上都不会扩展。似乎在垂直方向上的填充出现了问题,我无法弄清可能出了什么问题。
我试图在谷歌上搜索这个问题,惊讶地发现没有提到任何其他人遇到过这种情况。我正在使用带有OS X Yosemite的Mac,并运行python 2.7.5。我还尝试使用python 3.4.1编译,但没有看到任何变化。
编辑:根据下面的答案和评论,很明显我的代码没有任何问题,因为它似乎在其他机器上工作。如果不是代码错误,那么是否有人知道可能导致在运行上述代码时按钮无法垂直拉伸的原因?

当我测试时,它可以工作。 - Morb
为了确保,我刚刚直接从上面包含的代码中复制并按原样运行了它。它只在水平方向上扩展。这可能与我的操作系统和使用的Python版本有关,是否存在某些错误或问题? - wgrenard
我安装的是64位的Python 2.7.9,使用的操作系统是Win7 Enterprise 64位版。不过我怀疑操作系统是否会影响结果。 - Morb
3个回答

9

这是OSX本机按钮的一个特性。OSX上的按钮将具有固定的高度,且不会在垂直方向上扩展。除非使用其他小部件(如标签),否则无法进行更改。


很抱歉晚批准了。不知何故,直到今天我再次浏览这个问题时才发现这个答案在这里。 - wgrenard
也可以简单地设置固定的高度,例如 Button(root, height=900, text='text') - Delgan
@Delgan:就像我在答案中所说的那样,在OSX上那是行不通的。 - Bryan Oakley
我也遇到了同样的问题,但我的水平方向也不起作用。这是特定于Mac High Sierra Python 3.6吗?@BryanOakley - user5676791

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也会在垂直方向上填充


这是我在运行该代码时看到的链接 http://imgur.com/gallery/WTq3jt3/new。我知道它应该像什么,基于代码。它非常简单,但由于某种原因,在我的机器上似乎无法正常工作。 - wgrenard
这绝对与Python版本无关。 - Julia

0

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

from Tkinter import *

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

我认为这在OSX上不起作用。请参考被接受的答案。 - wgrenard
无法评论OSX。它在Windows操作系统上无法工作,但是按照这种方式进行修改对我有效。 - Bnilesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接