IronPythonでGUIを作成
IronPythonでWindows Formアプリケーションを作成する。
Visual Studio 2010にPython toolを入れてもデザイン画面が表示されない。原因不明。すべてのコントロールをコードで記述するようなことはしたくないため、代わりにSharpDevelop(SharpDevelop @ic#code)というIDEを使う。コードを書くのはイベントハンドラの部分だけにしたいので。
IronPythonはC#で実装されているので.NETとよく馴染んでいるらしいが、コードがとても書きにくいのだが...。いろいろできそうではあるが、どう書けばいいのか調べようにもリファレンスが見つからない。もう少しサンプルコードが充実していれば便利なのだけど。
以下のコードは、デザイン画面でマウスによりコントロールを配置することでほとんどが自動生成されたもの。日本語で注を入れた部分だけ書き加えた。
import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * class MainForm(Form): def __init__(self): self.InitializeComponent() def InitializeComponent(self): self._menuStrip1 = System.Windows.Forms.MenuStrip() self._fileToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self._exitToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self._helpToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self._dialogToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self._menuStrip1.SuspendLayout() self.SuspendLayout() # # menuStrip1 # self._menuStrip1.Items.AddRange(System.Array[System.Windows.Forms.ToolStripItem]( [self._fileToolStripMenuItem, self._helpToolStripMenuItem])) self._menuStrip1.Location = System.Drawing.Point(0, 0) self._menuStrip1.Name = "menuStrip1" self._menuStrip1.Size = System.Drawing.Size(284, 26) self._menuStrip1.TabIndex = 0 self._menuStrip1.Text = "menuStrip1" # # fileToolStripMenuItem # self._fileToolStripMenuItem.DropDownItems.AddRange(System.Array[System.Windows.Forms.ToolStripItem]( [self._exitToolStripMenuItem])) self._fileToolStripMenuItem.Name = "fileToolStripMenuItem" self._fileToolStripMenuItem.Size = System.Drawing.Size(40, 22) self._fileToolStripMenuItem.Text = "File" # # exitToolStripMenuItem # self._exitToolStripMenuItem.Name = "exitToolStripMenuItem" self._exitToolStripMenuItem.Size = System.Drawing.Size(152, 22) self._exitToolStripMenuItem.Text = "Exit" # クリックイベントに関数を登録する self._exitToolStripMenuItem.Click += self.SelectFileExit # # helpToolStripMenuItem # self._helpToolStripMenuItem.DropDownItems.AddRange(System.Array[System.Windows.Forms.ToolStripItem]( [self._dialogToolStripMenuItem])) self._helpToolStripMenuItem.Name = "helpToolStripMenuItem" self._helpToolStripMenuItem.Size = System.Drawing.Size(46, 22) self._helpToolStripMenuItem.Text = "Help" # # dialogToolStripMenuItem # self._dialogToolStripMenuItem.Name = "dialogToolStripMenuItem" self._dialogToolStripMenuItem.Size = System.Drawing.Size(152, 22) self._dialogToolStripMenuItem.Text = "Dialog" # クリックイベントに関数を登録する self._dialogToolStripMenuItem.Click += self.SelectHelpDialog # # MainForm # self.ClientSize = System.Drawing.Size(284, 262) self.Controls.Add(self._menuStrip1) self.MainMenuStrip = self._menuStrip1 self.Name = "MainForm" self.Text = "test" self._menuStrip1.ResumeLayout(False) self._menuStrip1.PerformLayout() self.ResumeLayout(False) self.PerformLayout() def SelectFileExit(self, sender, e): self.Close() # GUI画面を閉じる def SelectHelpDialog(self, sender, e): MessageBox.Show("test", "Dialog") # メッセージダイアログを開く
以下のコードを実行すればGUI画面が起動する。Program.pyというファイル名で完全に自動生成される。最初の3行は、.NET Frameworkのライブラリを使用するための準備。もう慣れた。
import clr clr.AddReference('System.Windows.Forms') clr.AddReference('System.Drawing') from System.Windows.Forms import Application import MainForm Application.EnableVisualStyles() form = MainForm.MainForm() Application.Run(form)
IronPythonの世界 (Windows Script Programming) | |
荒井 省三 ソフトバンク クリエイティブ 2007-03-28 売り上げランキング : 405441 Amazonで詳しく見る by G-Tools |