私は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()
以下は、期待レイアウト(右)と実際のレイアウト(左)です。 root
をメインフレームではなくツールパネルのマスターにすると、予想される出力が得られます。しかし、これは私の望むものではありません。メインフレームをツールパネルのマスターにする方が理にかなっていると思います。
self.toolpanel = ToolPanel(self, 200, h) # Actual result
self.toolpanel = ToolPanel(master, 200, h) # Expected (desired) result
pack()
を呼び出すまで、その大きさはまだ
1x1
であることに気づきました。私は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
# ...