Python.use(better, Tkinter=”GoF”) # Command
‖記事一覧‖
Python.use(better, Tkinter=”GoF") # Python で学ぶ デザインパターンの世界
Command《Python3.1》
《著》森こねこ・小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
α版♪1993/11/25 ● β版♪1995/11/22 ● 第1版♪2003/05/23
概要
Tkinter アプリケーションとして、Python で実現した事例を紹介します。
Tkinter によるオブジェクト指向プログラミングへの扉を開きます。
※ Tcl/Tk で作成した例題を、Tkinter で再構成しました。
事例
次のコードを実行すると、ウィンドウが現われます。
>>> command()
from tkinter import * from tkinter.filedialog import FileDialog ## ---------------------------------------- class TIPS(object): def __init__(self, master, canvas): self.value = StringVar() self.master = master self.canvas = canvas self.create_CommandButton(master) self.create_Menubutton(master) def create_CommandButton(self, master): frame = Frame(master) frame.pack(side=RIGHT) s = "aliceblue", "beige", "lavender", for e in s: widget = CommandButton( master=frame, text=e, variable=self.value, command=self.buttonCommand, ) widget.pack(anchor=W) def create_Menubutton(self, master): widget = Menubutton( master=master, text='File', ) widget.pack(side=TOP) menu = Menu(widget) widget['menu'] = menu for text, command in [ ("Open...", self.fileCommand), ("Exit" , self.exitCommand), ]: CommandMenu( menu=menu, text=text, command=command, ) def buttonCommand(self): bg = self.value.get() self.canvas.config(bg=bg) def fileCommand(self): dir_or_file = "./_flags" s = FileDialog(self.master).go(dir_or_file) self.image = PhotoImage(file=s) s = s.split("/")[-1] text = s.split(".")[0] dx = self.master["padx"] dx = int(str(dx)) x, y, dy = 50+dx, 80, 8 self.canvas.create_image( x, y , anchor=S, image=self.image) self.canvas.create_text( x, y+dy, anchor=N, text=text) def exitCommand(self): self.master.destroy() ## ---------------------------------------- class CommandHolder(object): pass class CommandButton(CommandHolder, Radiobutton): def __init__(self, master, text, variable, command): super().__init__( master=master, text=text, value=text, variable=variable, command=command, ) class CommandMenu(CommandHolder): def __init__(self, menu, text, command): menu.add_radiobutton( label=text, command=command, ) ## ---------------------------------------- def command(): root = Tk() root.title("Command") root.config(padx=8, pady=4) canvas = Canvas( root, width=100, height=100, relief=RIDGE, borderwidth=5, ) TIPS(root, canvas) canvas.pack() root.mainloop()
↑TOP
関連記事
- INDEX《Tkinter》
- Let’s GoForward - GoF を反面教師に
- C# Design Patterns 22. The Command Pattern.
Last updated♪2009/09/14