🌊
Python Tkinterで複数Frameアプリを作る
並列に並べる場合
import tkinter as tk
class Frame1(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.label1 = tk.Label(self)
self.label1["text"] = "これはFrame1です"
self.label1["fg"] = "red"
self.label1.pack()
# ここにFrame1のウィジェットを追加
class Frame2(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.label2 = tk.Label(self)
self.label2["text"] = "これはFrame2です"
self.label2["fg"] = "blue"
self.label2.pack()
# ここにFrame2のウィジェットを追加
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.title("多重フレームアプリケーション")
# フレーム1を作成
self.frame1 = Frame1(self)
self.frame1.pack(side="left")
# フレーム2を作成
self.frame2 = Frame2(self)
self.frame2.pack(side="left")
# アプリケーションの実行
self.mainloop()
if __name__ == "__main__":
application = Application()
入れ子(ネスト)にする場合
import tkinter as tk
class InnerFrame(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.label_inner = tk.Label(self, text="Inner Frame")
self.label_inner.pack()
# ここにInnerFrameのウィジェットを追加
class OuterFrame(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.label_outer = tk.Label(self, text="Outer Frame")
self.label_outer.pack()
# ネストされたInnerFrameを作成
self.inner_frame = InnerFrame(self)
self.inner_frame.pack()
# OuterFrameのウィジェットを追加
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.title("ネストされたフレームのアプリケーション")
# OuterFrameを作成
self.outer_frame = OuterFrame(self)
self.outer_frame.pack()
# アプリケーションの実行
self.mainloop()
if __name__ == "__main__":
app = Application()
Discussion