Tkinter 网格管理器
我在使用Tkinter的grid()管理器时遇到了一些麻烦。它把行之间的间距设置得太远了。我有两个输入框需要放置,我希望一个几乎直接在另一个下面。当我把它们放在同一行和同一列时,但改变pady选项,它们就会直接重叠在一起。我知道一定有办法解决这个问题,以前从来没有遇到过这样的情况。
我在Windows XP上使用Python 2.6。
2 个回答
2
这两个小部件是唯一的吗?还是说在另一列里还有一个小部件,它的高度超过了一行?如果有的话,就应该给它加上“rowspan”属性。
如果不是这样的话,我建议你单独对这个单元格(给它加上“rowspan 2”),添加一个Tkinter.Frame小部件,然后在这个Frame里,简单地用“pack”管理器添加你想要的小部件。
所以,不是这样:
entr1.grid(my_window, row=1, column=1)
entr2.grid(my_window, row=1, column=1)
你应该这样做:
frame = Tkinter.Frame(my_window)
entr1 = Tkinter.<Whatever-widget>(Frame, ...)
entr1.pack()
entr2 = Tkinter.<Whatever-widget>(Frame, ...)
entr2.pack()
2
不要把它们放在同一行和同一列;把上面的放在一行,把下面的放在下一行,但要在同一列。这样就可以了。
要注意,网格管理器并不需要所有的行和列都放满小部件;它会忽略那些空的行和列。