ユーザーインターフェース付きのスクリプトを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 (Isorated、Integrated)が必要です。)
Visual Studioは容量が大きいので、ダウンロードとインストールにはそれなりの時間がかかります。
2.Visual Studioを起動する
インストールが済んだらVisual Studio Shellを起動して、「ファイル」→「新規作成」→「プロジェクト」と進み、以下の画像のようにIronPython関連のプロジェクトが表示されていたら成功です。
ここで「IronPython WPF Application」を選びます。
ソリューションエクスプローラで
WpfApplication[数字].pyをポイントすると、
コードエディタが表示されます。
デフォルトでは下記のコードが既に入力されています。
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デザイナとコードエディタが同時に表示されます。
デフォルトで入力されているXAMLコードは以下の通りです。
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 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)
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」ボタンをクリックするとテキストボックス内の文字がクリアされます。
これで、以前の記事で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を使って作る(2)(2013.02.09)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1)(2013.02.09)
- マクロ/スクリプトの作成を省力化する(2) HTAのソースをVBA上で動的に生成するコード + それを書くためのツール(2012.12.27)
- マクロ/スクリプトの作成を省力化する(1)HTA Helpomaticの紹介(2012.12.27)
「クリップボード可視化」カテゴリの記事
「XAML」カテゴリの記事
- XAMLの動的読み込みについてのメモ(文字列処理からUI生成までをシームレスにつなぐ)(2013.07.14)
- 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1):(2013.07.02)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(2)(2013.02.09)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1)(2013.02.09)
「IronPython」カテゴリの記事
- XAMLの動的読み込みについてのメモ(文字列処理からUI生成までをシームレスにつなぐ)(2013.07.14)
- 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1):(2013.07.02)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(2)(2013.02.09)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1)(2013.02.09)
「.NET Framework」カテゴリの記事
- XAMLの動的読み込みについてのメモ(文字列処理からUI生成までをシームレスにつなぐ)(2013.07.14)
- 英文中の動詞を自動でハイライトするツール:自然言語処理ツールキットNatural Language ToolKit(NLTK)の品詞タガー(Part-Of-Speech (POS) tagger)と、WPF のXAML要素 + IronPython を利用して(1):(2013.07.02)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(2)(2013.02.09)
- ユーザーインターフェース付きのスクリプトをXAML×IronPythonを使って作る(1)(2013.02.09)
「WPF」カテゴリの記事
この記事へのコメントは終了しました。
コメント