python
  • tkinter
  • label
  • frame
  • 2012-07-10 88 views 3 likes 
    3

    我創建了一個固定大小的框架,現在我想添加一些標籤和其他小部件。但我觀察到,只要我在這個框架上添加新的小部件,它的屬性就不會被遵守,即大小和默認的背景顏色集不被遵守。將標籤添加到Tkinter中的框架忽略框架的屬性

    from Tkinter import * 
    tk = Tk() 
    page1 = Frame(tk, bg="blue", width=100, height=200) 
    l1 = Label(page1, text='This is label 1') 
    page1.pack() 
    l1.pack() 
    tk.mainloop() 
    

    因此,在上面的例子中,如果我註釋掉線4 & 6,然後我可以看到固定大小的藍色背景色的幀。我的要求是我想用這種顏色在這個框架上添加一些其他的小部件。

    回答

    3

    你是正確的寬度和高度沒有被尊重,但不是關於背景顏色。背景顏色不受影響,但由於背景恰好貼在標籤的周圍,因此看不到背景。如果您在打包時將標籤添加到標籤,則會看到背景。

    至於寬度和高度......這是Tkinter的一大特色之一。默認情況下,容器小部件展開或摺疊得足以容納其內容。因此,當您撥打pack時,會導致畫面縮小。這個特徵被稱爲幾何傳播

    對於浩浩蕩蕩的大部分應用程序,這是你想要的行爲。對於那些罕見的情況,當你想明確設置一個容器的大小時,你可以關閉這個功能。要關閉它,請調用容器上的pack_propagategrid_propagate(取決於您在該容器上使用網格還是包裝),並將其值設爲False

    使用你的代碼作爲一個例子,你會怎麼做:

    page1.pack_propagate(False) 
    

    我的建議是這樣做,而是學習如何與幾何傳播工作。當用戶調整窗口大小時,它會讓你的GUI表現得更好,而且你不會花時間去計算窗口的正確大小。讓Tkinter爲你做。

    +1

    感謝您的解釋,這就是我一直在尋找的。回顧你的推薦,我這樣做的目的是爲了設計一個widget應用程序。所以我雖然我可以使用框架來達到這個目的,這樣當我去到下一頁時,嚮導的大小仍然保持不變。 – sarbjit 2012-07-11 12:21:32

    +0

    @sarbjit:你可以通過使用'wm_geometry'給它一個明確的大小來保持嚮導的大小不變。當你這樣做時,它迫使最外面的窗口保持它的大小,並且內部框架將擴展以適應窗口。 – 2012-07-11 12:30:22

     相關問題

    • 暫無相關問題^_^