投稿数 - 437, コメント - 59538, トラックバック - 156

鉄のニシキヘビ - 3 匹目

過去の記事で、「IronPython で WindowsForm を書いてもあまり意義を見つけられない」といった事を書いたが、面白いので紹介しておく。

疑問に思ったのが、Form を表示しながら、「対話型プロンプト」で その Form を弄る事はできるのか、だ。

>>> import clr
>>> clr.AddReference("System.Windows.Forms")
>>> from System.Windows.Forms import *
>>> mainForm = Form()
>>> mainForm.Show()

と書いても、mainForm はハングして操作不可能になる。理由は Application.Run() を行っていないからだが、それならば上記のコードは、フォームを表示してスグ消えるのでは?と思ったが、この際それは置いておこう。

>>> import clr
>>> clr.AddReference("System.Windows.Forms")
>>> from System.Windows.Forms import *
>>> mainForm = Form()
>>> Application.Run(mainForm)

と書くと、mainForm はハングしないで通常表示されるが、「対話型プロンプト」の方に処理が帰ってこないので、これ以上の操作が不可能だ。

対話型プロンプトで WindowsForm は無理なのか?もう一つスレッドを起こして云々やろうとしたら、「Tutorial」に「winforms.py」というモジュールがあるのを見つけた。そう、そのモジュールは、別スレッドを起動して、Application.Run() していたのだ。

>>> import winforms
>>> import clr
>>> clr.AddReference("System.Windows.Forms")
>>> from System.Windows.Forms import *
>>> mainForm = Form()
>>> mainForm.Show()

これで無事、フォームを表示できた。続いて以下を書く。

>>> mainForm.Text = "shuujin"

こうすると、今、この瞬間に「表示中(実行中)のフォーム」のタイトルが"shuujin"になるのだ!

どういう仕組みだ?

投稿日時 : 2006年6月11日 16:55

フィードバック

No comments posted yet.

コメントの投稿

タイトル
名前
URL
コメント