2016-11-29 22 views
-1

這個問題發生在我多次代碼多次,並沒有一次我想出瞭解決它的方法。第0行第0列的窗口小部件正在增長,並且放置方式與其他窗口不同。當我抓住窗口的末端來擴展它並使其增長時,它與其他小部件之間的差距就會增加。如何解決體重​​/小部件的增長失衡問題?

我已經包括了圖片,你要看看會發生什麼:

Dice 1 widget seperated from other widets

這是顯示問題的代碼:

from tkinter import * 
from tkinter import ttk 
root=Tk() 

mainframe = ttk.Frame(root, padding="3 3 12 12") 
mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
mainframe.columnconfigure(0, weight=1) 
mainframe.rowconfigure(0, weight=1) 

#Grows the items in the gui 
root.grid_columnconfigure(0, weight=1) 
root.grid_rowconfigure(0, weight=1) 
root.grid_columnconfigure(1, weight=1) 
root.grid_rowconfigure(1, weight=1) 


ttk.Label(mainframe, text="Dice 1:").grid(column=0, row=0, sticky=(W, E)) 
ttk.Label(mainframe, text="Dice 2:").grid(column=0, row=1, sticky=(W, E)) 
ttk.Label(mainframe, text="Total:").grid(column=0, row=2, sticky=(W, E)) 

root.mainloop() 

的問題似乎無論從即將來臨聲明:

mainframe.grid(column=1, row=1, sticky=(N, W, E, S)) 

or this this s因爲您配置的mainframe第一行不同tatement

root.grid_rowconfigure(0, weight=1) 
+0

你想要什麼行爲?窗口大小調整時,您是否希望「大型機」粘貼到窗口的左上角,還是希望它填滿窗口?或者,你是否希望它居中,以便任何額外的空間均勻地圍繞邊緣?標籤怎麼樣,他們應該怎麼做?你想讓他們留在頂端,還是集中在'大型機'內? –

+0

我想讓它填滿窗戶,至於標籤,它們應該距離彼此的距離相等。 – Unknownzdx

+0

「合適的窗戶」太模糊。有多餘的空間時,你希望它們水平和垂直拉伸?垂直拉伸文本無法完成。或者你是否真的想讓他們留在左上角,所有的空白都應該放在窗口的右側和底部? –

回答

1

第一個小部件具有不同的行爲。如果您希望所有行的行爲方式相同,則以相同方式配置它們。或者刪除該

mainframe.rowconfigure(0, weight=1) 

或添加此

mainframe.rowconfigure(1, weight=1) 
mainframe.rowconfigure(2, weight=1) 
1

的最簡單的解決方案是在mainframe移除行0(零)的weight屬性,而是給到行3.原因是重量,您不需要爲標籤分配任何額外的垂直空間,並且積極的weight屬性會導致將某些額外空間賦予該行或列。

通過給標籤後的空行賦予一個正的權重,所有空的垂直空間將出現在標籤下面。

mainframe = Frame(root, background="pink") 
mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) 
mainframe.columnconfigure(0, weight=1) 
mainframe.rowconfigure(3, weight=1) 

很難說,如果這是實際的正確解決您的問題,因爲這取決於你如何期望mainframe本身表現了一下。它應該縮小以適應標籤嗎?它是否應該適合主窗口?