Domanda

Vorrei aggiungere " Funzionalità simile a IDLE " all'applicazione WinForms in C #, ma non ho idea di come farlo e non sono riuscito a trovare nulla di utile con Google.

Quindi, in sostanza, voglio un'interfaccia a riga di comando interattiva, in cui l'utente possa inserire del codice Python ed eseguirlo (non solo espressioni, dovrebbe essere possibile definire nuove funzioni).

Quindi, da dove iniziare? Sono disponibili buoni tutorial o esempi?

È stato utile?

Soluzione 4

Attraverso la mailing list di IronPython ho trovato IronTextBox2 , che è un buon esempio di come le cose sono fatte. Ha bisogno di un po 'di modifiche, per farlo funzionare, ma per il resto è una buona soluzione.

Altri suggerimenti

Se la mia memoria mi serve correttamente, c'è un capitolo sull'incorporazione di Python nel libro Python in a Nutshell . Forse puoi trovare alcune informazioni utili lì, ma poiché il libro non è specifico di Windows, potresti doverlo adattare da solo.

Vorrei impostare il mio WinForm in questo modo: aggiungere 2 caselle di testo.

1: per output. Impostare la proprietà multilinea della prima su true e renderla di sola lettura.

2: per input. Utilizzare l'evento KeyUp o KeyPress per es. la chiave di ritorno e usa il testo per fare quello che vuoi: aggiungi il comando alla casella di testo di output, avvia il codice sul motore e acquisisci l'output dell'interprete

Questo link ( http: // gruppi. google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1 ) potrebbe fornire alcune risposte sull'avvio di comandi da un motore Python.

IronRuby viene fornito con un interprete da riga di comando. IronPython non ne ha anche uno? In tal caso, il codice sorgente sarebbe un buon inizio :) Oh, e in caso contrario, assicurati di guardare l'interprete IronRuby, perché entrambe le lingue sono basate sul DLR e sono quindi abbastanza simili da imparare da entrambe.

Ecco la mia soluzione più generica:

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

È possibile impostare un timer in esecuzione a intervalli di 60000. In questo modo saprai solo per quanti minuti l'utente non sposta i mouse. Puoi anche chiamare " isIdle " sull'evento Tick per verificare ogni intervallo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top