如何堆叠按钮而不是在Tkinter中排队?

时间:2015-01-27 14:41:20

标签: python tkinter alignment frames

目前我正在显示3个基本按钮:

from tkinter import *

root = Tk()

topFrame = Frame(root)
topFrame.pack(side=TOP)
leftFrame = Frame(root)
leftFrame.pack(side=LEFT)
botFrame = Frame(root)
botFrame.pack(side=BOTTOM)

button1 = Button(leftFrame, text="Button 1", fg="Black")
button2 = Button(leftFrame, text="Button 2", fg="Black")
button3 = Button(leftFrame, text="Button 3", fg="Black")

button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)

root.mainloop()

此刻的3个按钮会粘在窗口左边的框架上,然后会相互排队而不是堆叠在另一个上面,我该如何解决?

2 个答案:

答案 0 :(得分:3)

探索grid功能。将您的pack语句更改为

button1.grid(row=0,column=0)
button2.grid(row=1,column=0)
button3.grid(row=2,column=0)

答案 1 :(得分:3)

您明确告诉他们与side=LEFT并排。您需要side=TOP,以便它们位于框架中空白区域的顶部。

button1.pack(side=TOP)
button2.pack(side=TOP)
button3.pack(side=TOP)

使用pack时,值TOP,LEFT,RIGHT和BOTTOM告诉窗口小部件应该占用剩余空间的哪一侧。第一次使用LEFT时,它将为小部件保留整个框架的左侧。下次使用LEFT时,它指的是小部件中剩余的空间,不包括左边缘,因为它已经有一个小部件。净效果是LEFT导致小部件从左到右排列,RIGHT将它们从右到左排列,依此类推。