Pergunta

Eu gostaria de acrescentar "IDLE-como funcionalidade" para aplicação C # WinForms, mas não consegue ter uma idéia de como fazer isso e não consegui encontrar nada de útil com o Google.

Então, basicamente, eu quero interface de linha de comando interativa, onde o usuário pode digitar um código Python e executá-la (não apenas expressões, deve ser possível definir novas funções).

Então, por onde começar? Existem bons tutoriais ou amostras disponíveis?

Foi útil?

Solução 4

Thru lista de discussão IronPython Eu encontrei IronTextBox2 , que é bom exemplo de como as coisas são feitas. Ele precisa de um pouco de ajustes, para obtê-lo correr, mas por outro lado é boa solução.

Outras dicas

Se a memória não me falha, há um capítulo sobre a incorporação de Python no livro Python in a Nutshell . Talvez você possa encontrar alguma informação útil lá, mas desde que o livro não é específico do Windows, você pode ter que adaptá-lo a si mesmo.

Eu setyp meu WinForm como este:. Adicionar 2 caixas de texto

1: para a saída. Defina a propriedade de várias linhas dos primeiros a verdade, e torná-lo somente leitura.

2: para entrada. Use KeyUp Ou KeyPress Evento de exemplo a tecla de retorno e utilizar o texto para fazer o que quiser: comando add a caixa de texto de saída, código de lançamento contra o motor e captura de saída do intérprete

Esta ligação ( http: // grupos. google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1 ) pode dar algumas respostas sobre o lançamento de comandos agains um motor de python.

IronRuby vem com um interpretador de linha de comando. Não IronPython também tem um? Se assim for, o código-fonte seria um bom começo :) Ah, e se isso não acontecer, não se esqueça de olhar para o intérprete IronRuby, porque ambas as línguas são baseados no DLR e são suficientes, portanto, semelhante a aprender com ambos.

Aqui vai a minha solução mais genérica:

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;
}

Você pode configurar um temporizador em execução em 60000 intervalo. Desta forma você só vai saber quantos minutos o usuário não se movem os ratos. Você também pode chamar "isIdle" no próprio evento Tick para verificar em cada intervalo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top