惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
博客园 - 聂微东
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
D
Docker
B
Blog
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
月光博客
月光博客
F
Fortinet All Blogs
爱范儿
爱范儿
H
Help Net Security
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
The Cloudflare Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
U
Unit 42

博客园 - Pharaoh

jae的mongo数据库管理工具(原创) 面是否包含点的算法 简单的远程控制软件 学习Python,编写了个网站 - Pharaoh - 博客园 将Unicode字符串转换为普通文字 - Pharaoh - 博客园 测试从Mathon插件发表 VS集成环境中的JavaScript脚本语法检查 测试用Windows Live Writer [转]滚动条颜色生成工具。 用资源管理器打开“打开文件”对话框的目录。 - Pharaoh - 博客园 用Word2007发Blog的配置方法(多图)。 - Pharaoh - 博客园 测试Word2007 用批处理写的显示磁盘剩余空间的小程序。 总算亲自看见了一个网站被黑后的页面。 [转]XP如何禁止媒体文件预览 Google Calendar V2.0汉化 快捷方便的对js文件进行语法检查。 C#通过http访问olap 事开机时Num Lock键打开。
用IronPython作为.Net的脚本语言。
Pharaoh · 2006-08-07 · via 博客园 - Pharaoh

周末看了关于IronPython的介绍,觉得用IronPython作为.Net的脚本语言还不错,今天试验了一下。
不可错过的MSDN TV —— IronPython: Python on the .NET Framework (上)

添加IronPython的引用,在按钮事件中调用py脚本。

        private PythonEngine engine;
        
private void button1_Click(object sender, EventArgs e)
        {
            
if (engine == null)
            {
                engine 
= new PythonEngine();
                engine.Globals[
"win"= this;
                System.IO.FileStream fs 
= new System.IO.FileStream("scripting-log.txt",
   System.IO.FileMode.Create);
                engine.SetStandardOutput(fs);
            }
            
try
            {
                engine.ExecuteFile(
"test.py");
            }
            
catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }          
        }

在test.py中可以用脚本修改主窗口属性,添加控件,添加鼠标事件等。

import clr
clr.AddReferenceByPartialName(
"System.Windows.Forms")
clr.AddReferenceByPartialName(
"System.Drawing")
clr.AddReferenceByPartialName(
"IronPython")

from System.Windows.Forms import *
from System.Drawing import *

win.Text
="中文"
win.MaximizeBox
=False
win.Opacity
=0.9
win.ShowIcon
=False
win.TopMost
=True
#win.WindowState=FormWindowState.Minimized
MessageBox.Show(win.WindowState.ToString())

def click(f, a):
    l 
= Label(Text = "Hello")
    l.Location 
= a.Location
    l.AutoSize 
= True
    l.ForeColor 
= Color.Red
    f.Controls.Add(l)

win.Click 
+= click

def buttonClick(f,a):
  MessageBox.Show(f.Text)

b
=Button(Text="按钮")
b.Click 
+= buttonClick
win.Controls.Add(b)

for i in win.Controls: i.Font = Font("Verdana"9)

源代码下载