2014-07-06 32 views
0

我想顯示窗口中的框架中的標籤不會伸展,爲什麼?

  • 一個窗口
  • 與單個Frame
  • 並在Frame一個Label這將拉伸至窗口

以下代碼的整個寬度

import Tkinter as tk 

root = tk.Tk() 
root.geometry("100x100") 
# first column of root will stretch 
root.columnconfigure(0, weight=1) 

# a frame in root 
upper_frame = tk.Frame(root) 
# first column of upper_frame will stretch 
upper_frame.columnconfigure(0, weight=1) 
upper_frame.grid(row=0, column=0) 

# a label in upper_frame, which should stretch 
mylabel = tk.Label(upper_frame) 
mylabel.grid(row=0, column=0) 
mylabel.configure(text="hello", background="blue") 

root.mainloop() 

個顯示

enter image description here

爲什麼不Label延伸到窗口的整個寬度,但一樣寬的文本?

回答

0

指定sticky選項當您致電gride =東,w =西)。否則,單元格中的小部件是中心對齊的。

upper_frame.grid(row=0, column=0, sticky='ew') 
.. 
mylabel.grid(row=0, column=0, sticky='ew') 

enter image description here

+0

謝謝。 'sticky'和'.columnconfigure()'之間有什麼關係?我的理解是'.columnconfigure()'會「告訴」子窗口小部件展開。現在我想知道(和猜測)是否是「告訴」(如「你必須儘可能多地展開」)或「允許」(如「你可以儘可能擴展,但你必須按順序('stick')) – WoJ

+0

@WoJ,'rowconfigure','columnconfigure'是關於單元格的高度,寬度比例,'sticky'是對齊的,用'W'指定'sticky','' E'或'N','S'將使構件伸展以填充單元格。 – falsetru

+0

@WoJ,參見[Tkinter網格幾何管理器](http://effbot.org/tkinterbook/grid.htm)以獲取更多信息。 – falsetru

相關問題