2017-07-28 419 views
1

我想用Tkinter模塊和python構建一個小軟件,但我無法弄清楚如何使用百分比而不是像素來設置小部件大小。我當然可以通過每時每刻都抓住整個窗口的大小來做到這一點,然後除以2得到50%的大小,但是有沒有更好的方法來用Tkinter模塊來做到這一點?Tkinter的百分比大小?

編輯1:要回答你的問題,我把我的代碼在這裏:

class Navbar: 
    def __init__(self, master): 
     self.maxsizeFrame = Frame(master, height = 50) #maxsize handler, prevent self.frame to grow too big 
     self.maxsizeFrame.pack(fill = X, expand = NO) 
     self.frame = Frame(self.maxsizeFrame) 
     self.frame.pack(side = TOP, fill = BOTH, expand = YES) 
     self.masteries = Button(self.frame, text = "Masteries") 
     self.masteries.pack(side = LEFT, fill = BOTH, expand = YES) 
     self.runes = Button(self.frame, text = "Runes") 
     self.runes.pack(side = RIGHT, fill = BOTH, expand = YES) 

所以我想創建一個在「self.frame」處理的兩個按鈕,一個導航欄。但是我希望這個設計能夠響應,這就是爲什麼我將展開設置爲「YES」。然而,我想爲「self.frame」設置最大尺寸,但我發現的唯一方法是將此框架放在另一個框架中(「self.maxsizeFrame」),並將此框架擴展爲「NO」。最後,我想將最大擴展大小設置爲主窗口的一半,所以如果「self.maxsizeframe」的高度可以百分比,那麼它可能會很好。謝謝閱讀。

編輯2: 實際上,使用網格佈局構建軟件似乎更有效,並且權重的選項是準確的。

+1

有辦法,但我們需要更多細節。使用百分比大小是不尋常的。你想爲每個小部件做,還是隻有一個小部件?你想使用哪個小部件或小部件?你可以創建一個簡單的[mcve]嗎? –

回答

0

雖然它取決於小部件,但您應該可以做到width=30%,並且與高度相同。你可以編輯你的帖子,說明你正在使用哪個小部件。我不會推薦百分比,因爲它們有時會變得很時髦。