2017-05-25 86 views
0

我嘗試瞭解tkinter的工作原理。我有這個簡單的程序:如何使用tkinter自定義框架

import tkinter as tk 

class Application: 
    def __init__(self, master): 
     frame = tk.Frame(master, height=100, width=500, bg="#FFFFFF", bd=10) 
     frame.grid() 
     self.button = tk.Button(frame, text="QUIT", fg="red", command=frame.quit) 
     self.button.grid() 

root = tk.Tk() 
app=Application(root) 
root.mainloop() 
當我運行該程序,我得到一個窗口

,但我爲框架指定的選項(高度,寬度...)不工作。我的錯誤在哪裏?感謝您的幫助。

回答

-1

您需要將grid_propagate設置爲零。這將停止調整幀大小的按鈕。

frame.grid()之後,加frame.grid_propagate(0)

import tkinter as tk 

class Application: 
    def __init__(self, master): 
     frame = tk.Frame(master, height=100, width=500, bg="#FFFFFF", bd=10) 
     frame.grid() 
     frame.grid_propagate(0) 
     self.button = tk.Button(frame, text="QUIT", fg="red", command=frame.quit) 
     self.button.grid() 

root = tk.Tk() 
app=Application(root) 
root.mainloop() 
+0

'grid_propagate'對於正在學習tkinter的人來說是個不好的建議。這幾乎從來都不是適當的解決方案。 –

0

Tkinter窗口小部件旨在「縮小以適應」他們的子窗口小部件。如果您的目標是編寫響應字體,分辨率和大小更改的GUI,則幾乎總是您想要的。換句話說,你沒有犯過錯,tkinter的行爲完全按照它的設計行事。

雖然有辦法強制窗口達到特定的大小,但我強烈建議不要這樣做。如果您將注意力集中在製作適當尺寸的內部小工具上,則您的框架和主窗口將全部智能調整大小以確保一切正常。幾乎不需要給任何東西顯示像素大小(除了可能是畫布)。

+0

謝謝布賴恩您的建議! – user3283415