普段C#を利用している方は、.NET Frameworkが非クラスで利用できることを失念しているかもしれません。
C#では大抵の場合は、Formクラスを継承した独自のクラスを実装することが多いためです。
Pythonでももちろんそれは可能ですが、Pythonではクラス自体が必須要件ではありませんので、
規模が小さいのであれば、柔らかな後述のような形でコンパクトに済ませる場合も多いでしょう。
以下のようなファイルをwinform.pyとして作成してみましょう。
文字コードはcp932(sjis)です。
# coding:cp932 import clr clr.AddReferenceByPartialName("System.Windows.Forms") clr.AddReferenceByPartialName("System.Drawing") from System.Windows.Forms import * from System.Drawing import * form = Form() font = Font("MS Gothic", 15) form.Text = "非クラスでのフォーム" def form_OnClick(sender, event): l = Label(Text = "Hello") l.AutoSize = True l.Location = event.Location l.Font = font sender.Controls.Add(l) form.Click += form_OnClick Application.Run(form)
上のファイルを呼び出すマクロを記述し、適当に秀丸に登録して、
実行してみましょう。
#PY = loaddll( hidemarudir + "\\" + "hmPy.dll" ); #_ = dllfuncw(#PY, "DoFile", currentmacrodirectory + "\\winform.py" ); freedll(#PY);