IronPythonとwx.NETライブラリで遊んでいましたが、IronPythonのwx.NETを使用することが可能です。私は、基本的なアイデア(LinuxでMono 2.8.1とIronPython 2.6.1でテスト済み)を示す小さなサンプルアプリケーションを作成しました。 XRCファイルはwxFormBuilderを使用して作成されました。 IronPythonを使用してwx.NET GUIを作成するのはかなり簡単なはずです。同等のC#コードと同じように見えます。
hello_frame.pyw:
import clr
clr.AddReference("wx.NET.dll")
from wx import *
class MyFrame1(Frame):
def __init__(self):
XmlResource.Get().LoadFrame(self, None, "MyFrame1")
self.EVT_BUTTON(XmlResource.XRCID("m_button1"), EventListener(self.OnMyButtonClicked))
def OnMyButtonClicked(self, sender, e):
MessageDialog.ShowModal(self, "HELLO WORLD!", "", WindowStyles.DIALOG_OK | WindowStyles.ICON_INFORMATION)
class HelloWorldDemo(App):
def OnInit(self):
XmlResource.Get().InitAllHandlers()
XmlResource.Get().Load("hello_frame.xrc")
f = MyFrame1()
f.Show()
return True
def main():
app = HelloWorldDemo()
app.Run()
if __name__ == '__main__':
main()
hello_frame.xrc:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
<object class="wxFrame" name="MyFrame1">
<style>wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL</style>
<size>500,300</size>
<title>Demo</title>
<centered>1</centered>
<object class="wxBoxSizer">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxStaticText" name="m_staticText1">
<label>My Super Program</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxTextCtrl" name="m_textCtrl1">
<value></value>
<maxlength>0</maxlength>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button1">
<label>Press Me!</label>
<default>0</default>
</object>
</object>
</object>
</object>
</resource>