IronPython

IronPythonでPythonライブラリを使う

IronPythonのコードの中で、 import struct import tarfile と書いたら「No module name...」と表示されるエラーになったので、CPythonのライブラリはやはり設定すること無しでは使えそうもないと改めて実感。 そこで import sys sys.path.append(r'C:\Progr…

DataGridViewでの行の追加と削除

DataGridViewを使って動的なテーブルを作成する。行の追加は、Rows.Add()した後、Cellの値を指定する。 具体的には下のように処理する。 def Button1Click(self, sender, e): time = self._textBox1.Text valu = self._textBox2.Text idx = self._dataGridVi…

入力された値の妥当性をチェック

入力値が想定した範囲にない場合に、メッセージダイアログを表示して入力欄を赤く色付けするようにする。 コードの例は以下の通り。 import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * c…

タイマーで動いているように見せる

昨日の円の描画にタイマーを付けてアニメーションにする。少しちらつくが、これで小さい円が大きな円の周りを回転しているように見える。コードは以下の通り。 import math import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.D…

色に透明度を指定する

透明度を指定した色で円を塗りつぶす。コードは下の通り。 import math import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form from System.Drawing import Size, C…

マウスでクリックした位置に円を描画する

マウスでクリックした位置に円を描画するプログラムは以下の通り。クリックした座標をすべて記録しておく。 import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form …

マウスでクリックした点を結ぶ線を描く

画面上でのマウスをクリックする。それらの点を結ぶ線を描くIronPythonプログラムは以下の通り。 import clr clr.AddReference("System.Windows.Forms") clr.AddReference("System.Drawing") from System.Windows.Forms import Application, Form from Syste…

マウスで画面をクリックしたときの処理

マウスでのクリック時のイベントをどう定義したらよいか。 GUI画面をクリックしたときに、Do_Somethingで定義した処理を行う場合のコードを以下に書く。本当は、クリックしたところに円を描くようにしたいのだが、そこまでまだ到達できない。 import System.…

一方的にメッセージを表示するダイアログ

ある程度時間のかかる処理を行っている間、メッセージダイアログを表示したい。「今、印刷中です」のようなもの。 MessageBoxを使うと、メッセージ画面にボタンが一緒に表示されてしまう。「OK」「キャンセル」「Yes」「No」等。表示するダイアログは処理の…

ファイルの保存ダイアログ

IronPythonによるGUIで、ファイルを保存するダイアログを開く処理を実装する。 SharpDevelopを使ってコードを書くことを想定する。まず、ボタンを一つ設置する。このボタンを押したときにファイル保存ダイアログが開いてユーザーにフォルダとファイル名の入…

ファイルを開くダイアログで使えるメソッド

ofd = OpenFileDialog() ofd.Filter = "text file (*.txt)|*.txt" #ダイアログに表示するタイトル ofd.Title = "Select text file" #初期指定フォルダ ofd.InitialDirectory = "C:\\" #初期指定ファイル ofd.FileName = "test.txt" ofd.RestoreDirectory = T…

コードの中で別プログラムを実行

import os os.system("C:/Program Files/myprogram.exe") これで起動しようとすると、 'C:/Program'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。 となるので、代わりに import subprocess subp…

ListViewの編集

ListViewにアイテムを追加したり、選択したアイテム行を削除する方法。 簡単なサンプルコードを下に示す。ここでは、Addボタンを押すと決まった文字列を追加する。アイテム行を選択してRemoveボタンを押すと行を削除する。行が選択されていなければ何もしな…

開かれるウィンドウの初期位置を定義する

何も指定しないとデフォルトロケーションということで、左上寄りに表示される。 画面中央に表示する場合の設定 class MainForm(Form): def __init__(self): self.InitializeComponent() def InitializeComponent(self): self.SuspendLayout() # # MainForm #…

GUIから外部ソフトを実行したい

以前に、GUIからPDFファイルを開きたい - 理想のユーザ・インターフェイスを求めてを検討したが、コマンドラインから実行できる任意のプログラムを、同じようにGUIボタンを押したときに実行できるようにする。 やりかたはPDFファイルを開いたときとほぼ同じ…

WebBrowserフォームのサンプル

画面上にWebBrowserのFormを配置する。そのサンプルを下に示す。 url_fileに、URLを指定する。サンプルのようにローカルに置いたHTMLファイルのファイルパスを指定しても問題なく表示される。 import System.Drawing import System.Windows.Forms from Syste…

exeファイルもしくはdllファイル作成

IronPythonのコードを、Command Line Python Compiler (pyc.py)でコンパイルして実行形式ファイルを作成する。 実行例。 > ipy.exe pyc.py /main:main.py /target:winexe Input Files: Output: main Target: WindowApplication Platform: ILOnly Machine: I3…

マルチスレッド実行のテスト

IronPythonでのマルチスレッド実行方法をテストする。GUI画面を起動するときのイベントループを別スレッドで実行するには、どうすればよいか?テストコードを以下のように書く。2つの画面を立ち上げただけだが...。Single Threaded Apartment (STA) threadと…

IronPythonの参考文献

最近読んでいる本。他にめぼしい本がない。IronPythonの世界 (Windows Script Programming)荒井 省三 ソフトバンク クリエイティブ 2007-03-28売り上げランキング : 176564Amazonで詳しく見る by G-ToolsIronPython in ActionMichael J. Foord Christian Mui…

ESCキーを押したときの挙動をボタンを押したときの挙動と結びつける

SharpDevelopのTips。画面上のCancelボタンを押すと画面が閉じるようにする。この処理をCancelボタンを押さずに、ESCキーを押したときにも実行されるようにする。まず、ボタン付きの画面を作成する。設置したボタンのDesign (Name)をbuttonCancelとした。こ…

メニュー項目にショートカットキーを設定する

IronPythonで作成するGUIについて、メニュー項目にショートカットキーを設定したい。 SharpDevelopのデザイン画面で、まずメニューを設置する。ここでは、ウィンドウを閉じるExit項目だけの簡単なものを作成した。メニュー項目Exitのプロパティを見ると、「M…

ウィンドウのサイズを変えたときのボタンの振る舞い

ウィンドウのサイズをマウスでいじるときに、配置されたコントロールの動きというか振る舞いを規定したい。それらはボタンのプロパティの中の「Layout」の「Anchor」で調整することができる。今の場合だと、このボタン(Button1)はウィンドウの左側と上側か…

コントロールにツールチップを表示する

マウスポインタを重ねたときに、ツールチップが表示されるようにする。 フォームデザイナを使用して設定を行う。まずボタンを二つ配置する。 これらボタンにマウスポインタを持っていくと、ツールチップを表示するようにしたい。Windowsフォームのツールボッ…

ツールボックスのWindowsフォームにあるTimerの設定方法

デザイナ画面でGUIの作成を行う場合に、WindowsフォームデザイナーのツールボックスにあるTimerをどのように設定したらよいか不明だったので、調べたことをまとめておく。 SharpDevelopを使った場合の具体的な操作を記述するが、同じ操作はVisual Studioにも…

import osに失敗する(SharpDevelopで実行すると)

SharpDevelopでIronPythonのコードを書くとき、なぜかosモジュールのインポートに失敗する。原因は不明。下のサンプルコードは、ボタンを押してファイルを選択する。選択されたファイルのファイル名だけがボタン上に表示される。os.path.basename()を使って…

メニュー項目にアイコンを表示する

メニュー項目にアイコンを表示するサンプルコード。 SharpDevelopのGUIにおいて、アイコンファイルを指定して自動的にコードを生成するとRunしてもエラーとなって表示できない。この現象はアイコンに限らず他の画像ファイルを表示するときにも同じことが起こ…

GUIからPDFファイルを開きたい

IronPythonで作ったGUI上のボタンを押すと、PDFファイルを開くようにしたい。PDFファイルを開くためにはどうすればいいのかというところがポイントになるが、Process.Startを使うと、指定した文書を関連づけられた外部プログラムで起動できるようなので、こ…

プログレスバーをマーキースタイルで実行する

処理にかかる時間が不明な場合、プログレスバーをマーキー(Marquee)スタイルで実行するのが自然だ。その処理をどう書くか?マーキースタイルのプログレスバーは表示を開始した時点から動き始める。止める方法が分からなかったので、処理を始めるときに表示し…

ウィンドウにアイコンを表示する

SharpDevelopで作成するWindows Form Applicationのウィンドウにアイコンを付加する。下のコードのように、一番最後の行を加えればよい。アイコンファイル(拡張子ico)は事前に用意しておく。 import System.Drawing import System.Windows.Forms from Syst…

画面上(のPictureBox)をクリックしたときの処理

ウィンドウ画面上をマウスでクリックしたときに、表示されている画像が90度回転されるような処理を実現する。 まず、PictureBoxを配置して画面全体を覆うようにする。ここに画像ファイルを貼り付ける。画像ファイルは外部ファイルとしてパスで指定する。Pict…