IronPythonでGUIを作成

IronPythonWindows Formアプリケーションを作成する。
Visual Studio 2010にPython toolを入れてもデザイン画面が表示されない。原因不明。すべてのコントロールをコードで記述するようなことはしたくないため、代わりにSharpDevelop(SharpDevelop @ic#code)というIDEを使う。コードを書くのはイベントハンドラの部分だけにしたいので。

IronPythonC#で実装されているので.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)
IronPythonの世界 (Windows Script Programming)荒井 省三

ソフトバンク クリエイティブ 2007-03-28
売り上げランキング : 405441


Amazonで詳しく見る
by G-Tools