2015-02-09 59 views
8

我得到了這個Text部件,我希望它使用網格幾何管理器擴展並填充其整個父部件。展開文本部件以填充Tkinter中的整個父框架

根據我見過的例子,這個示例程序應該工作,但它不會,當擴展窗口時,內容不會調整大小。

from Tkinter import * 
root = Tk() 

input_text_area = Text(root) 
input_text_area.grid(row=1, column=0, columnspan=4, sticky=W+E) 
input_text_area.configure(background='#4D4D4D') 

root.mainloop() 

任何幫助表示讚賞

對於它的價值,我在Python 2.7(最新的2.x版)正在運行,並在PyCharm編碼,但我不認爲IDE相關。

+1

afaik你需要添加列權重或什麼...我記得有這個問題一次。這個鏈接似乎相關http://userpages.umbc.edu/~dhood2/courses/cmsc433/spring2010/?section=Notes&topic=Python¬es=94 – 2015-02-09 21:34:31

回答

11

當使用網格時,父級中的任何額外空間與行和/或列的「權重」成比例地分配(即:權重爲2的列獲得的空間是在重量1)。默認情況下,行和列的權重爲0(零),這意味着沒有額外的空間給予它們。

您需要給出小部件處於非零權重的列,以便在窗口增長時將任何額外空間分配給該列。

root.grid_columnconfigure(0, weight=1) 

您還需要指定一個權重的行,並N+S+E+W粘性值,如果你想讓它在各個方向生長。

5

因爲你的窗口只包含一個小部件,你想這個小部件來填滿整個窗口,這將是更容易使用的pack geometry manager代替grid

input_text_area.pack(expand=True, fill='both') 

expand=True告訴Tkinter的,允許小部件擴展到填充幾何主體中的任何額外空間。 fill='both'使小部件能夠水平和垂直展開。

+1

我的代碼只是一個例子,我的佈局有點複雜,我減少了問題到最小表達式,我真的不想使用包幾何管理器,我發現它使用更少的瑣碎用戶界面更加可怕。 – 2015-02-09 22:00:27

0
from tkinter import * 
root = Tk() 

input_text_area = Text(root) 
input_text_area.grid(row=0, column=0, columnspan=4, sticky=N+S+W+E) 
input_text_area.configure(background='#4D4D4D') 
root.grid_columnconfigure(0, weight=1) 
root.grid_rowconfigure(0, weight=1) 

root.mainloop() 

不知道這是你想要的。 但這會填滿整個屏幕。