2
我是Tkinter的新手,在獲取所需佈局時遇到了一些問題。代碼如下:如何在Tkinter中獲得此佈局?
import tkinter as tk
class MainFrame(tk.Frame):
def __init__(self, master, w, h):
tk.Frame.__init__(self, master, width=w, height=h)
self.toolpanel = ToolPanel(self, 200, h)
self.toolpanel.pack(side=tk.LEFT, fill=tk.Y)
class ToolPanel(tk.Frame):
def __init__(self, master, w, h):
tk.Frame.__init__(self, master, width=w, height=h, background='#000')
def main():
root = tk.Tk()
root.geometry('640x480')
mainframe = MainFrame(root, 640, 480)
mainframe.pack()
root.mainloop()
下面是預期佈局(右)和實際佈局(左)。如果我使用工具面板的主人而不是主框架,那麼我會得到預期的輸出。但這不是我想要的,我認爲讓主框架成爲工具面板的主人更合理。
self.toolpanel = ToolPanel(self, 200, h) # Actual result
self.toolpanel = ToolPanel(master, 200, h) # Expected (desired) result
我注意到,當我構建主框架,即使我通過它的寬度和高度,其大小仍是1x1
,直到我打電話pack()
。我應該如何更好地組織我的Tkinter應用程序,以及如何獲得理想的結果?
class MainFrame(tk.Frame):
def __init__(self, master, w, h):
tk.Frame.__init__(self, master, width=w, height=h)
# At this point, the size is still 1x1
# ...