Formのサンプルにメニューを追加してみます。 メニューを表示して"New"を選択すると、ポップアップメニューを表示します。
MSDNのC#のサンプルそのままではありませんが、イベントハンドラのdef windowNewMenu_onclick(sender, arge)
を登録するところは明確に違うところです。
サンプルではイベントハンドラをToolStripMenuItemのコンストラクタの引数に指定しますが、IronPythonでは.Clickに代入します。
02_form_menustrip.ipy
# coding=Shift_JIS # IronPython Example: MenuStrip # - # @author: YasuhiroABE <yasu@yasundial.org> # @see: MenuStrip Class Example from MSDN API Reference # import clr clr.AddReferenceByPartialName("System.Windows.Forms") clr.AddReferenceByPartialName("System.Drawing") import System from System.Windows.Forms import Form from System.Windows.Forms import DockStyle from System.Windows.Forms import MenuStrip from System.Windows.Forms import MessageBox from System.Windows.Forms import ToolStripMenuItem from System.Drawing import Size ## setup form object form = Form() form.Text = "Hello World!" form.Size = Size(300,200) form.IsMdiContainer = True ## setup windowMenu object windowMenu = ToolStripMenuItem("Window") ## setup windowNewMenu windowNewMenu = ToolStripMenuItem("New", None) def windowNewMenu_onclick(sender, arge): MessageBox.Show("Thank you for clicking on me!", "windowNewMenu_onclick") pass windowNewMenu.Click += windowNewMenu_onclick windowMenu.DropDownItems.Add(windowNewMenu) ## setup windowMenu object ms = MenuStrip() ms.MdiWindowListItem = windowMenu ms.Items.Add(windowMenu) ms.Dock = DockStyle.Top ## formオブジェクトへのms変数の追加は最後にします form.MainMenuStrip = ms form.Controls.Add(ms) System.Windows.Forms.Application.Run(form) ## end ##
ここでは"Window"->"New"メニューを追加して、"New"メニューにイベントハンドラをセットしています。 form.IsMdiContaineはサンプルから引き継いだ記述で、コメントアウトしても動くのですが効果について理解していないのでそのままにしてあります。
サンプルからToolStripについての記述は削除してしまいましたが、基本的にはサンプルを引き継ぐ事で可能だと思います。>
普通に日本語を含めると、次のようなエラーメッセージが表示されます。
File "02_menustrip.ipy", line SyntaxError: Non-ASCII character '\x83' in file 02_menustrip.ipy on line 40, but no encoding declared; see http://www.python.org/peps/pep-0263.ht ml for details
先頭に# coding=Shift_JIS
を入れることで回避できます。
Created: 2010-03-11, Last modified: 2010-03-19
www.yasundial.org by
Yasuhiro ABE
is licensed under a Creative Commons Attribution 2.1 Japan License.
Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.