Python 为什么赢了';我的按钮部件不能垂直展开

Python 为什么赢了';我的按钮部件不能垂直展开,python,tkinter,Python,Tkinter,我正在熟悉Tkinter,我正在尝试编写一个非常简单的程序,使用pack geometry manager在窗口中显示一个按钮 我正在试验pack()的各种配置选项,例如展开,填充,和侧边,我遇到了一个特殊的问题。我编写了以下代码: from Tkinter import * root = Tk() widget = Button(root, text='text') widget.pack(expand=YES, fill=BOTH) root.mainloop() 问题是按钮会在水平方向

我正在熟悉Tkinter,我正在尝试编写一个非常简单的程序,使用pack geometry manager在窗口中显示一个按钮

我正在试验
pack()
的各种配置选项,例如
展开
填充
,和
侧边
,我遇到了一个特殊的问题。我编写了以下代码:

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进行编译,但没有看到任何更改

编辑:


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

请尝试运行此代码,以查看
填充和
展开的行为

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
也沿垂直方向填充

尝试运行此代码以查看
fill
expand

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

参数
填充
也在垂直方向填充

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

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

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

from Tkinter import *

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

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

from Tkinter import *

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


当我测试它时,只是为了确保我只是直接从上面包含的代码中复制并按原样运行它。它只在水平方向上扩展。这可能与我的操作系统和我正在使用的python版本有什么关系吗?我有Python2.7.9,64位,我使用Win7 Enterprise 64位,但我怀疑当我测试它工作时,操作系统会影响结果,只是为了确保我只是直接从上面包含的代码复制并按原样运行。它只在水平方向上扩展。这可能与我的操作系统和我正在使用的python版本有什么关系吗?我有Python2.7.9,64位,我在Win7 Enterprise 64位,但我怀疑操作系统是否会影响结果运行该代码时,有一个链接指向我所看到的内容。基于代码,我理解它应该是什么样子。这很简单,但由于某种原因,它似乎无法在我的机器上工作。它肯定与Python版本无关。下面是一个链接,指向我运行代码时看到的内容。基于代码,我理解它应该是什么样子。这很简单,但由于某种原因,它似乎无法在我的机器上工作。它肯定与Python版本无关。对于延迟接受,我深表歉意。不知何故,直到今天我碰巧再次浏览这个问题时,我才意识到这个答案就在这里。也可以简单地设置一个固定的高度,比如
按钮(root,height=900,text='text')
@Delgan:就像我在回答中说的,这在OSX上不起作用。我也有同样的问题,但是我的也不能水平工作。这是针对mac high sierra python 3.6的吗@BryanOakleyApologies对延迟接受表示歉意。不知何故,直到今天我碰巧再次浏览这个问题时,我才意识到这个答案就在这里。也可以简单地设置一个固定的高度,比如
按钮(root,height=900,text='text')
@Delgan:就像我在回答中说的,这在OSX上不起作用。我也有同样的问题,但是我的也不能水平工作。这是针对mac high sierra python 3.6的吗@Bryanoakley认为这在OSX上不起作用。查看已接受的答案。无法对OSX发表评论。它在windows操作系统上不起作用,但用这种方式修改对我来说是有效的。我认为这在OSX上不起作用。查看已接受的答案。无法对OSX发表评论。它在windows操作系统上不起作用,但用这种方式修改对我来说是可行的。