🌊

Python Tkinterで複数Frameアプリを作る

2023/09/06に公開

並列に並べる場合

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