🐙
# Tkinterで画面を作る
import tkinter as tk
from tkinter import filedialog
class ToolbarView(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"] = "これはToolbarViewです"
# self.label1["fg"] = "red"
# self.label1["bg"] = "gray"
# self.label1.pack()
# self.fileButton = tk.Button(self)
# self.fileButton["text"] = "ファイル"
# self.fileButton["command"] = self.openFiles
# file_label = tk.Label(self, text="File")
# file_label.pack(pady=20)
self.choices = [
"File",
"New File",
"Recent files",
"Save",
"Save as",
"Print",
]
self.selected_option = tk.StringVar(self)
self.selected_option.set(self.choices[0])
# self.fileOption = tk.OptionMenu(
# self, self.selected_option, *self.choices
# )
self.fileOption = tk.OptionMenu(
self, self.selected_option, *self.choices
)
self.fileOption.pack(side="left", padx=20)
self.selected_option.trace("w", self.option_selected)
# 結果を表示するラベル
self.result_label = tk.Label(self, text="")
self.result_label.pack()
def option_selected(self, *args):
# 選択されたオプションが変更されたときに呼び出されるコールバック
selected_option = self.selected_option.get()
self.selected_option.set(self.choices[0])
self.result_label.config(text=f"選択されたオプション: {selected_option}")
# def openFiles(self):
# filedialog.
class NavigatorView(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"] = "これはNavigatorViewです"
self.label2["fg"] = "blue"
self.label2["bg"] = "white"
self.label2.pack()
# ここにFrame2のウィジェットを追加
class UtilityView(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"] = "これはUtilityViewです"
self.label2["fg"] = "blue"
self.label2["bg"] = "black"
self.label2.pack()
# ここにFrame2のウィジェットを追加
class MainView(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"] = "これはMainViewです"
# self.label2["fg"] = "blue"
# self.label2["bg"] = "red"
# self.label2.pack()
self.canvas = tk.Canvas(self, width=300, height=300, bg="blue")
self.canvas.pack()
# ここにFrame2のウィジェットを追加
class ContentView(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.toolbarView = ToolbarView(self)
self.toolbarView.pack(side="top", expand=True)
self.utilityView = UtilityView(self)
self.utilityView.pack(side="right", expand=True)
self.navigatorView = NavigatorView(self)
self.navigatorView.pack(side="left", expand=True)
self.mainView = MainView(self)
self.mainView.pack(side="top", expand=True)
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.title("多重フレームアプリケーション")
# ContentViewを作成
self.contentView = ContentView(self)
self.contentView.pack(fill=tk.BOTH, expand=True)
# アプリケーションの実行
self.mainloop()
if __name__ == "__main__":
application = Application()
Discussion