我熟悉Tkinter,我正在尝试编写一个非常简单的程序,它使用包几何管理器在窗口中显示一个按钮。
我正在尝试使用pack()
的各种配置选项,例如expand
,fill
和side
,并且我遇到了一个特殊的问题。我写了以下代码:
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进行编译,但没有看到任何变化。
修改
根据下面的答案和评论,很明显我的代码没有任何问题,因为它似乎适用于其他机器。如果代码中没有错误,是否有人知道在运行上述代码时可能导致按钮不垂直拉伸的原因?
答案 0 :(得分:7)
这是OSX上本机按钮的一项功能。 OSX上的按钮将是固定高度,不会垂直扩展。除了使用不同的小部件(如标签)之外,您无能为力。
答案 1 :(得分:0)
尝试运行此代码以查看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()
参数fill
也会填充垂直方向
答案 2 :(得分:0)
我也是初学者,您的代码中缺少用于填充的定义几何,如下所示:
from Tkinter import *
root = Tk()
root.geometry("600x400")
widget = Button(root, text='text')
widget.pack(expand=YES, fill=BOTH)
root.mainloop()