Windows Dev. Site

Python.NET

今回は、.NET のコードをIronPythonでなくPythonから呼び出しライブラリを使用したサンプルをためしてみました。

参考)https://github.com/pythonnet/pythonnet

環境)pythonnet v3.0.3 / python v3.10.13 / Anaconda Navigator 2.4.0 / Windows 11
hello.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import clr

clr.AddReference("System.Windows.Forms")
import System.Windows.Forms as WinForms
from System.Drawing import Size, Point


class HelloApp(WinForms.Form):

    def __init__(self):
        super().__init__()
        self.Text = "Hello! From Python"
        self.AutoScaleBaseSize = Size(5, 13)
        self.ClientSize = Size(392, 217)
        h = WinForms.SystemInformation.CaptionHeight
        self.MinimumSize = Size(392, (117 + h))

        self.button = WinForms.Button()
        self.button.Location = Point(160, 64)
        self.button.Size = Size(82, 20)
        self.button.TabIndex = 2
        self.button.Text = "Click Me!"

        self.button.Click += self.button_Click

        self.textbox = WinForms.TextBox()
        self.textbox.Text = "Hello!"
        self.textbox.TabIndex = 1
        self.textbox.Size = Size(82, 40)
        self.textbox.Location = Point(160, 24)

        self.AcceptButton = self.button
        self.Controls.Add(self.button)
        self.Controls.Add(self.textbox)

    def button_Click(self, sender, args):
        WinForms.MessageBox.Show(self.textbox.Text)

    def run(self):
        WinForms.Application.Run(self)

def main():
    form = HelloApp()
    app = WinForms.Application
    app.Run(form)

if __name__ == '__main__':
    main()

実行

python hello.py

py02

Windows Form の表示とマウスクリックを確認できました。