Question

J'aimerais ajouter "fonctionnalité de type IDLE". à l’application C # WinForms, mais je ne sais pas trop comment faire cela et je n’ai rien trouvé d’utile avec Google.

Donc, en gros, je veux une interface de ligne de commande interactive, où l'utilisateur peut entrer du code Python et l'exécuter (pas seulement des expressions, il devrait être possible de définir de nouvelles fonctions).

Alors, par où commencer? Existe-t-il de bons tutoriels ou exemples?

Était-ce utile?

La solution 4

J'ai trouvé la IronTextBox2 , ce qui est un bon exemple les choses sont faites. Il faut un peu de peaufinage pour le faire fonctionner, mais c'est une bonne solution.

Autres conseils

Si ma mémoire est bonne, il existe un chapitre sur l'intégration de Python dans le livre Python en bref . Vous y trouverez peut-être des informations utiles, mais comme le livre n’est pas spécifique à Windows, vous devrez peut-être l’adapter vous-même.

Je voudrais définir mon WinForm comme ceci: ajouter 2 zones de texte.

1: pour la sortie. Définissez la propriété multiligne du premier sur true et assurez-vous qu'elle est en lecture seule.

2: pour l'entrée. Utilisez KeyUp ou KeyPress Event pour, par exemple, la touche de retour et utilisez le texte pour faire ce que vous voulez: ajoutez une commande à la zone de texte en sortie, lancez le code contre le moteur et capturez la sortie de l'interpréteur

Ce lien ( http: //. groupes. google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1 ) peut donner des réponses sur le lancement de commandes contre un moteur python.

IronRuby est livré avec un interpréteur de ligne de commande. IronPython n'en a-t-il pas aussi? Si oui, le code source serait un bon début :) Oh, et si ce n’est pas le cas, veillez à consulter l’interprète IronRuby, car les deux langages sont basés sur le DLR et sont donc suffisamment similaires pour apprendre des deux.

Voici ma solution la plus générique:

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

Vous pouvez configurer une minuterie fonctionnant sur un intervalle de 60000. De cette façon, vous saurez simplement combien de minutes l’utilisateur ne déplace pas les souris. Vous pouvez également appeler " isIdle " sur l’événement Tick lui-même pour vérifier chaque intervalle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top