0

我想向 C# WinForms 应用程序添加“类似 IDLE 的功能”,但我不太清楚如何做到这一点,也找不到任何对 Google 有用的东西。

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

那么,从哪里开始呢?有没有好的教程或示例可用?

4

5 回答 5

1

如果我没记错的话,Python in a Nutshell一书中有一章是关于嵌入 Python 的。也许你可以在那里找到一些有用的信息,但是由于这本书不是特定于 Windows 的,你可能需要自己修改它。

于 2009-04-29T08:33:06.043 回答
1

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

1:用于输出。将第一个的多行属性设置为true,并使其只读。

2:用于输入。使用 KeyUp 或 KeyPress 事件作为返回键并使用文本做你想做的事:添加命令到输出文本框,针对引擎启动代码并捕获解释器的输出

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

于 2009-04-29T10:36:45.560 回答
0

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

于 2009-04-29T08:34:34.823 回答
0

通过 IronPython 邮件列表,我找到了 IronTextBox2,这是一个很好的例子。它需要一些调整才能使其运行,但除此之外是很好的解决方案。

于 2009-04-30T21:34:55.047 回答
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”来检查每个间隔。

于 2012-11-22T16:09:41.960 回答