您可以在三個簡單的步驟解決您的問題。首先,刪除所有的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具有適當的調整大小行爲。 –
最後,我不同意電網給予「更大的控制」。這不是更大,只是不同而已。爲了將按鈕放置在堆疊或排中,包裝可以說是優越的。當然,網格在將物體放入網格方面是優越的。至於最大的「控制」,地方可以讓你精確地指定一個小部件去哪裏。我認爲建議只使用「快速簡單的圖形用戶界面」的包裝是個不好的建議。我創建了許多複雜的商業圖形用戶界面,我使用了很多包。正確的建議是全部學習,並使用正確的工具進行工作。 –