我是 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()
下面是预期布局(右)和实际布局(左)。如果我让root
工具面板的主人而不是主框架,那么我将得到预期的输出。但这不是我想要的,我认为让主机成为工具面板的主人更有意义。
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
# ...