您可以在三个简单的步骤解决您的问题。首先,删除所有的padx
's,因为它们使按钮不对齐。其次,使用anchor = "w"
使按钮左对齐。第三,设置side
等于"top"
,以便按钮垂直放置而不是水平放置。 (但是,由于side
默认为“top”,因此您可以将其完全删除)。下面是固定的脚本:
from Tkinter import Tk, Button
root = Tk()
B = Button(root, text="BUTTON1")
C = Button(root, text="BUTTON2")
D = Button(root, text="BUTTON3")
B.pack(anchor = "w", pady = 0)
C.pack(anchor = "w", pady = 100)
D.pack(anchor = "w", pady = 120)
root.mainloop()
另一种方法是使用grid
方法而不是pack
:
from Tkinter import Tk, Button, W
root = Tk()
B = Button(root, text="BUTTON1")
C = Button(root, text="BUTTON2")
D = Button(root, text="BUTTON3")
# 'row' sets the row number that the widget is placed on
# 'sticky' is the same as 'anchor'
B.grid(row=0, pady=0, sticky=W)
C.grid(row=1, pady=100, sticky=W)
D.grid(row=2, pady=120, sticky=W)
root.mainloop()
虽然我个人比较喜欢grid
在pack
,决定权其实只是一个偏好的问题。
我想你的回答会更好,如果你提到,简单地删除'side = left'并不完全是你的解决方案的原因。相反,'side'的默认值是'“top”',因此明确地将其设置为'“top”'或接受默认值就是解决方案的原因。 –
如果您推荐使用网格,则还应该推荐使用'grid_rowconfigure'和'grid_columnconfigure',以便GUI具有适当的调整大小行为。 –
最后,我不同意电网给予“更大的控制”。这不是更大,只是不同而已。为了将按钮放置在堆叠或排中,包装可以说是优越的。当然,网格在将物体放入网格方面是优越的。至于最大的“控制”,地方可以让你精确地指定一个小部件去哪里。我认为建议只使用“快速简单的图形用户界面”的包装是个不好的建议。我创建了许多复杂的商业图形用户界面,我使用了很多包。正确的建议是全部学习,并使用正确的工具进行工作。 –