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

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

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

有帮助吗?

解决方案 4

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

其他提示

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

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top