2013-08-03 101 views
1

我正在嘗試使用tkinter庫爲我的程序創建接口。將窗口部件放到窗口上(使用tkinter)

我的界面應該出現這樣的

BUTTON1

BUTTON2

BUTTON3

B.pack(side = "left", padx = 00, pady = 0) 
C.pack(side = "left", padx = 100, pady = 100) 
D.pack(side = "left", padx = 50, pady = 120) 

我已經嘗試改變padx和pady, 的參數,但它仍然出現在同一行。我使用Ubuntu 13.04操作系統

如何設置參數,以獲得所需的格式

在此先感謝.. :)

回答

1

您可以在三個簡單的步驟解決您的問題。首先,刪除所有的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() 

雖然我個人比較喜歡gridpack,決定權其實只是一個偏好的問題。

+0

我想你的回答會更好,如果你提到,簡單地刪除'side = left'並不完全是你的解決方案的原因。相反,'side'的默認值是'「top」',因此明確地將其設置爲'「top」'或接受默認值就是解決方案的原因。 –

+0

如果您推薦使用網格,則還應該推薦使用'grid_rowconfigure'和'grid_columnconfigure',以便GUI具有適當的調整大小行爲。 –

+0

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