Hatena::ブログ(Diary)

LinuxとかBlenderとかVol2 このページをアンテナに追加 RSSフィード



2008-06-17

[]Python functools覚書き


Python2.5で追加された functoolsモジュール、結構便利ですね。

特にTkinterを使ってGUIを作ってる時とか。ということで、functoolsについての覚書です。


たとえば、Tkinterのボタンとかにコールバック関数を登録しようとした場合、

こんな感じになると思います。


import Tkinter as Tk


def cb_func():
    print 'button pressed'

root = Tk.Tk()

bt = Tk.Button(master=root, text='Button', command=cb_func)
bt.pack()

root.mainloop()

で、コールバック関数引数を渡したいなぁ。。と思った場合、Python 2.5よりも前では

import Tkinter as Tk

class ButtonCB:
    def __init__(self, text):
        self.text = text

    def __call__(self):
        print self.text


root = Tk.Tk()

bt = Tk.Button(master=root, text='Button', command=ButtonCB('Button Pressed'))
bt.pack()

root.mainloop()

といった具合にしていましたが、Python2.5からは

import Tkinter as Tk
import functools


def cb_func(text):
    print text

root = Tk.Tk()

bt = Tk.Button(master=root, 
               text='Button',
               command=functools.partial(cb_func, 'Button Pressed'))
bt.pack()

root.mainloop()

といった感じで書けるようになってました。

いやはや、勉強になります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/jkani4/20080617/1213702748
Connection: close