Python for .NETのPreview2リリース記念に作った簡易メモ帳です。単純なのでPythonから.NETを使う取っかかりになると思います。Pythonと.NETの組み合わせは非常に期待が持てそうです。
from CLR.System.Windows.Forms import Form,MainMenu,MenuItem,TextBox,OpenFileDialog,SaveFileDialog,DialogResult,Application,AnchorStyles,ScrollBars
from CLR.System.Drawing import Point,Size
class MyForm(Form):
def __init__(self):
self.mainMenu = MainMenu()
self.menuItem1 = MenuItem()
self.menuItem2 = MenuItem()
self.menuItem3 = MenuItem()
self.menuItem4 = MenuItem()
self.menuItem5 = MenuItem()
self.textBox = TextBox()
self.SuspendLayout()
self.mainMenu.MenuItems.Add(self.menuItem1)
self.menuItem1.Index = 0
self.menuItem1.MenuItems.Add(self.menuItem2)
self.menuItem1.MenuItems.Add(self.menuItem3)
self.menuItem1.MenuItems.Add(self.menuItem4)
self.menuItem1.MenuItems.Add(self.menuItem5)
self.menuItem1.Text = 'ファイル(&F)'
self.menuItem2.Index = 0
self.menuItem2.Text = '開く...(&O)'
self.menuItem2.Click += self.open_file_handler
self.menuItem3.Index = 1
self.menuItem3.Text = '名前を付けて保存(&A)...'
self.menuItem3.Click += self.save_file_handler
self.menuItem4.Index = 2
self.menuItem4.Text = '-'
self.menuItem5.Index = 3
self.menuItem5.Text = '終了(&X)'
self.menuItem5.Click += self.exit_app_handler
self.textBox.Anchor = AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right
self.textBox.Location = Point(0, 0)
self.textBox.Multiline = True
self.textBox.Name = 'textBox'
self.textBox.ScrollBars = ScrollBars.Vertical
self.textBox.Size = Size(297, 272)
self.textBox.TabIndex = 0
self.textBox.Text = ''
self.AutoScaleBaseSize = Size(5, 12)
self.ClientSize = Size(292, 266)
self.Controls.Add(self.textBox)
self.Menu = self.mainMenu
self.Name = 'MyForm'
self.Text = 'PyNotepad'
self.ResumeLayout(False)
def open_file_handler(self, sender, args):
dlg = OpenFileDialog()
dlg.DefaultExt = 'txt'
dlg.FileName = '*.txt'
dlg.Filter='テキスト文書(*.txt)|*.txt'
if dlg.ShowDialog() == DialogResult.OK:
f = open(dlg.FileName)
self.textBox.Text = f.read().replace('\n', '\r\n')
def save_file_handler(self, sender, args):
dlg = SaveFileDialog()
dlg.DefaultExt = 'txt'
dlg.FileName = '*.txt'
dlg.Filter='テキスト文書(*.txt)|*.txt'
if dlg.ShowDialog() == DialogResult.OK:
f = open(dlg.FileName, 'w')
f.write(self.textBox.Text)
def exit_app_handler(self, sender, args):
Application.Exit()
if __name__ == '__main__':
Application.Run(MyForm())
# vim:set ts=4 sts=4 sw=4: