OSXでSilverLight上のIronPythonを使って遊ぶ。

2007年05月13日(日) 18:17

SilverLightのインストール

  1. OSX用のSilverlight1.1 Alphaをダウンロード&インストールする。

  2. Silverlight1.1 Alpha SDKをここの右側にあるTop Downloadsから辿ってダウンロード。展開する。

  3. Safariを終了する。


(追記)Intel macでないと動作しません(忘れてた)


pythonを使うための準備

  1. OSXのApacheに.py / .jsxを認識させる

      $ sudo vi /private/etc/httpd/mime.types
      #末尾に追加
      text/python    py
      text/jscript    jsx
      

  2. Apacheを再起動

      $ sudo /usr/sbin/apachectl restart
      

  3. ホームディレクトリのサイトディレクトリ内にslのように適当な名前のディレクトリを作成する

  4. 展開しておいたSDKの中にあるSilverlight 1.1 Alpha Samples.zipを展開し、中のDLRConsoleというディレクトリをslディレクトリにコピーする

  5. Safariでhttp://localhost/~makoto/sl/DLRConsole/python/index.htmを開く。makotoは自分のユーザ名に置き換えてください


続いて、DLRConsole上のPythonを使ってアニメーションを作成しようと思ったのですが、.Net Framework3.0の純粋WPFに頭がやられてしまっていて、少し時間がかかりそうです(Ellipseを継承したクラスが作れないorz)。
とりあえずは、素敵なスクリーンキャストがあったのでみてみてください。

驚くことに、コンソールでは4つの言語、Ruby / Python / JScript / VB を同時に使っています。Pythonで作ったファンクションをJScriptから使ったりできちゃいます。


DLRConsoleは英語キー配列で入力しなければなりません。また、コンソールは1行ごとにインタプリットされますが、PythonペインやXAMLペインは編集後、コントロール+エンターで内容が即時反映されます。


今、つまっているところ

例えば円(Ellipse)を作る場合に、位置指定の仕方がわからない。wpf.setPosition使わなきゃいけないのか?
それだとXAMLの記述と思考が一致しなくて困る(.Net Framework3.0+IronPythonだとこんなことはない)。

py> from wpf import Ellipse
py> e = Ellipse()
py> e.Width = 10
py> e.Height = 10
py> e.Canvas.Top = 10
System.MissingMemberException: couldn't find member Canvas at in , line 0

xamlを使えばできるけど、ランダムにたくさん作りたい場合に困る。というかLoadって遅そうなイメージが。。

py> xaml_ellipse = """
py| <Ellipse
py| Width="10" Height="10"
py| Canvas.Top="10" Canvas.Left="10" />"""
py> x_e = wpf.XamlReader.Load(xaml_ellipse)
py> canvas.Children.Add(x_e)


Feedbacks

Tags