Как создать IDLE-подобную функциональность для приложения WinForms - PullRequest
0 голосов
/ 29 апреля 2009

Я бы хотел добавить "IDLE-подобную функциональность" в приложение C # WinForms, но я не совсем представляю, как это сделать, и не смог найти ничего полезного в Google.

Таким образом, в основном я хочу интерактивный интерфейс командной строки, где пользователь мог бы ввести некоторый код Python и выполнить его (не только выражения, должны быть возможности для определения новых функций).

Итак, с чего начать? Есть ли хорошие учебники или образцы доступны?

Ответы [ 5 ]

1 голос
/ 29 апреля 2009

Я бы настроил свой WinForm следующим образом: добавьте 2 текстовых поля.

1: для вывода. Установите для свойства multiline первого значение true и сделайте его доступным только для чтения.

2: для ввода. Используйте KeyUp или KeyPress Event, например, нажмите клавишу возврата и используйте текст, чтобы сделать то, что вы хотите: добавить команду в текстовое поле вывода, запустить код для движка и захватить вывод интерпретатора

Эта ссылка (http://groups.google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1) может дать ответы на некоторые вопросы о запуске команд против движка Python.

1 голос
/ 29 апреля 2009

Если память мне не изменяет, в книге есть глава о встраивании Python Python в двух словах . Возможно, вы сможете найти там некоторую полезную информацию, но поскольку книга не предназначена для Windows, вам, возможно, придется адаптировать ее самостоятельно.

0 голосов
/ 22 ноября 2012

Вот мое самое общее решение:

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 для проверки каждого интервала.

0 голосов
/ 01 мая 2009

Я нашел список рассылки IronPython IronTextBox2 , который является хорошим примером того, как все делается. Для его запуска требуется небольшая настройка, но в остальном это хорошее решение.

0 голосов
/ 29 апреля 2009

IronRuby поставляется с интерпретатором командной строки. У IronPython тоже нет? Если это так, исходный код будет хорошим началом :) Да, и если это не так, обязательно посмотрите на интерпретатор IronRuby, потому что оба языка основаны на DLR и поэтому достаточно похожи, чтобы учиться у обоих.

...