2009-06-25

wxPython の Event.Skip()

wxPython のことなど。別に中学生と張り合っているわけではありません。張り合ってませんったら。



Ctrl+X とかの、キー押下イベントをキャッチしたいのです。でも TextCtrl を使っているので、特定のキーコンビネーション以外は通常通り処理したいわけです。まさか全てのパターンでの処理は書きたくない。



ウィジェットのほうを探しても見つからないなぁと思ったら、Event オブジェクトに Skip() メソッドというのがありました。

This method can be used inside an event handler to control whether further event handlers bound to this event will be called after the current one returns.

このメソッドをイベントハンドラ内で使用すると、そのイベントハンドラ終了後、既にバインドされている他のイベントハンドラでも処理するかどうかを制御できる。

ウィジェットではなくて、Event オブジェクトのメソッドなのですね。なるほどなぁ。



import wx

class App(wx.App):
    def OnInit(self):
        frame = Frame()
        frame.Show()
        return True

class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title="my frame")
        self._text = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        self._text.Bind(wx.EVT_KEY_DOWN, self._handlekey)
        wx.BoxSizer(wx.VERTICAL).Add(self._text, flag=wx.EXPAND)

    def _handlekey(self, event):
        if (event.GetModifiers()&wx.MOD_CONTROL and
            event.GetKeyCode()==ord("X")):
            print "^X pressed"
        else:
            event.Skip() # <= ここ

if __name__ == "__main__":
    app = App(redirect=False)
    app.MainLoop()


2009-06-23

中学生ハカー

Python Code Reading 10 に行ったら、若いハカーがいました。中学生で、Java やってて、Python に興味を持ち始めて、ゆくゆくは OS を作りたいらしく、カーネルの勉強会にも顔を出しているとか。ブログを覗いてみると、Java のマルチスレッドプログラミングに言及していたりするわけです。うひゃあ。おっちゃんは、中学生のとき並列処理とか知らなかったよ。



プログラミングだけではなくて、テニスなんかも嗜むという男前な少年です。応援したくなります。困ったことがあったら、おっちゃんに言うてみ、と。自分が成しえない夢を託してしまいそうです。



で、森博嗣の「有限と微少のパン」を思い出しました。

子供に夢を託した方が、自分が夢を実現するよりも楽だからだ。(p.200)

確かに。OS を作るという一点にしても、彼のほうが遙かに実現確率が高いです。まあ私は彼の父親ではないし、OS開発どころか、父親や夫というポジションを得ることさえ成しえなさそうですが。



パトロンっていうのも似たような立場なんでしょうけれど、自分が何をしているか分かっている点で、健全なのかも知れません。私は、お金も知識も与えられないので、応援だけしています。ってゆーか、中間試験と高校受験はやっとけ、少年。



と、油断させておいて、彼が試験に忙殺されている隙に、こっそり thireading と multiprocessing モジュールのコードを読んでみます。






2009-06-11

Deskography

Deskography という、デスクの写真を公開するシンプルなサービがあります。いやもうそれだけ。それ Flickr (r


ミニマリズムに憧れるので、



とかが好きです。なかなか、ここまでそぎ落とせませんが、そぎ落としたいと思っています。そのうち、私のデスクもアップロードするかも。