« ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1) | トップページ | 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1): »

2013年2月 9日 (土)

ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(2)

このエントリーをはてなブックマークに追加



前回
からの続きです。

今回は、XAMLを使って、以前の記事でHTAを使って作成した簡易クリップボードビューアと等価なものを作成してみます。

1.必要な環境を揃える

以下の必要な環境を揃えます。
全て無料で入手できます。

まずはIronPython本体。

(1)IronPython 2.73

次に、Visual StudioでIronPython WPF Application を開発するための
環境を手に入れます。以下の3つです。


Visual StudioはなくてもXAMLを用いたWPFアプリの開発は可能 (HTAやVBS等と同様、テキストファイルをテキストエディタで編集すればOK)なのですが、前回触れたように、Visual StudioがあればXAMLインターフェースの作成はずっと簡単になります。

(2)Microsoft Visual Studio 2012 Shell (Isolated) 再頒布可能パッケージ


(3)Microsoft Visual Studio 2012 Shell (Integrated) 再頒布可能パッケージ

(4)Python Tools For Visual Studio

(なお、上記ではWindows 7以降の環境を想定してVisual Studio 2012へのリンクを張っていますが、OSがXP/Vistaの場合には一つ前のバージョンである
Visual Studio 2010 (IsoratedIntegrated)が必要です。

Visual Studioは容量が大きいので、ダウンロードとインストールにはそれなりの時間がかかります。

2.Visual Studioを起動する

インストールが済んだらVisual Studio Shellを起動して、「ファイル」→「新規作成」→「プロジェクト」と進み、以下の画像のようにIronPython関連のプロジェクトが表示されていたら成功です。

Vsshell1


ここで「IronPython WPF Application」を選びます。

ソリューションエクスプローラで
WpfApplication[数字].pyをポイントすると、
コードエディタが表示されます。

Vs_solution1

デフォルトでは下記のコードが既に入力されています。

import wpf

from System.Windows import Application, Window

class MyWindow(Window):
    def __init__(self):
        wpf.LoadComponent(self, 'WpfApplication1.xaml')
   
if __name__ == '__main__':
    Application().Run(MyWindow())

リスト1 デフォルトのIronPythonコード(WpfApplication1.py)

いっぽう、ソリューションエクスプローラでWpfApplication[数字].xamlをポイントすると、XAMLデザイナとコードエディタが同時に表示されます。

Vs_xaml1

デフォルトで入力されているXAMLコードは以下の通りです。

<Window
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       Title="WpfApplication5" Height="300" Width="300">
       <Grid></Grid>
</Window>

リスト2 デフォルトのIronPythonコード(WpfApplication1.xaml)


3.コードを編集する

リスト1、2のコードをそれぞれ以下の
リスト3、4になるように編集したうえで(編集後のファイルは下でダウンロードできます)、両方のファイルを任意の同一フォルダ内に格納します。(デフォルトではVisual Studioの所定のフォルダに格納されているので、これ以外のフォルダにコピーを作った方が良い)

このとき、下記のリスト3のように、.py側のファイルで指定されているXAMLファイル名は、対となるXAMLファイル名を正確に指定するものでなければなりません。

import wpf
import clr
clr.AddReference('System.Windows.Forms')

from System.Windows import Application, Window
from System.Windows.Forms import Clipboard

if Clipboard.ContainsText():
    ct = Clipboard.GetText()

class MyWindow(Window):
    def __init__(self):
        wpf.LoadComponent(self, 'WpfApplication2.xaml')
        self.Textbox1.Text = ct 

    def Button_Click(self, sender, e):
        self.Textbox1.Text =""

if __name__ == '__main__':
    Application().Run(MyWindow())

リスト3 手を加えたリスト1のコード(ファイル名はWpfApplication2.py)

<Window
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       Title="WpfApplication2" Height="300" Width="300">
       <Grid>
        <TextBox Name="Textbox1" HorizontalAlignment="Left" Height="106" Margin="40,80,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="200" AcceptsReturn="True" />
        <Button Name="Button1" Content="Clear" HorizontalAlignment="Left" Height="22" Margin="40,214,0,0" VerticalAlignment="Top" Width="200" Click="Button_Click"/>
    </Grid>
</Window>

リスト4 手を加えたリスト2のコード(ファイル名はWpfApplication2.xaml)

「WpfApplication2.py」をダウンロード
「WpfApplication2.xaml」をダウンロード


4.コードを実行する


WpfApplication2.pyとWpfApplication2.xamlとが同一フォルダ内にあることを確認した上で、WpfApplication2.pyをダブルクリックする等して実行します。
以下のように、「WpfApplication2」というウィンドウが現れれば成功です。

起動するとクリップボードの内容がテキストボックス内に表示され、
「Clear」ボタンをクリックするとテキストボックス内の文字がクリアされます。

Wpf3

これで、以前の記事でHTAを使って作成した簡易クリップボードビューアと機能的に等価なものを、XAMLを使って作成することができました。

前回の記事で触れたように、XAMLコーディングはVisual Studio上で簡単に行うことができ、しかも、動的言語IronPythonを利用すれば、ビルドを要することなく、
HTAやVBScript, Windows Script Fileのように、書いたスクリプトをクリックして即実行する、というのを実現できます。

この他にもまだ、翻訳の仕事の各段階での作業の支援や文字列処理のためのツールを作っていく上で、XAMLとPython言語を使うことの利点があるのですが、それは次回以降、説明していきます。

 

|

« ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1) | トップページ | 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1): »

マクロ/スクリプティング」カテゴリの記事

クリップボード可視化」カテゴリの記事

XAML」カテゴリの記事

IronPython」カテゴリの記事

.NET Framework」カテゴリの記事

WPF」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(2):

« ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1) | トップページ | 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1): »