如何为WinForms应用程序创建类似IDLE的功能

时间:2009-04-29 08:28:25

标签: c# winforms ironpython

我想在C#WinForms应用程序中添加“类似IDLE的功能”,但我不知道如何做到这一点,并且找不到任何与Google有用的内容。

所以基本上我想要交互式命令行界面,用户可以输入一些Python代码并执行它(不仅仅是表达式,应该可以定义新函数)。

那么,从哪里开始?有没有好的教程或样本?

5 个答案:

答案 0 :(得分:1)

如果我的记忆正确地为我服务,那么在书Python in a Nutshell中有一章关于嵌入Python。也许你可以在那里找到一些有用的信息,但由于这本书不是Windows特定的,你可能需要自己调整它。

答案 1 :(得分:1)

我会像这样选择我的WinForm:添加2个文本框。

1:输出。将第一个的multiline属性设置为true,并将其设置为只读。

2:输入。使用KeyUp或KeyPress事件为例如返回键并使用文本来执行您想要的操作:将命令添加到输出文本框,针对引擎启动代码并捕获解释器的输出

这个链接(http://groups.google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1)可能会给出一些关于在python引擎中再次启动命令的答案。

答案 2 :(得分:0)

IronRuby附带一个命令行解释器。 IronPython还没有吗?如果是这样,源代码将是一个良好的开端:) 哦,如果没有,请务必查看IronRuby解释器,因为这两种语言都基于DLR,因此足够相似,可以从中学习。

答案 3 :(得分:0)

通过IronPython邮件列表我找到了IronTextBox2,这是一个很好的例子。需要稍微调整才能使其运行,否则就是一个很好的解决方案。

答案 4 :(得分:0)

这是我最通用的解决方案:

Point cursorPoint;
int minutesIdle=0;

private bool isIdle(int minutes)
{
    return minutesIdle >= minutes;
}

private void idleTimer_Tick(object sender, EventArgs e)
{
    if (Cursor.Position != cursorPoint)
    {
        // The mouse moved since last check
        minutesIdle = 0;
    }
    else
    {
        // Mouse still stoped
        minutesIdle++;
    }

    // Save current position
    cursorPoint = Cursor.Position;
}

您可以设置以60000间隔运行的计时器。通过这种方式,您将知道用户不移动鼠标的分钟数。您也可以在Tick事件本身上调用“isIdle”来检查每个间隔。