Frage

Ich mag „IDLE-ähnliche Funktionalität“ zu C # WinForms-Anwendung hinzufügen, aber ich verstehe nicht ganz eine Idee, wie das zu tun und nichts Nützliches mit Google finden kann.

Also im Grunde möchte ich interaktive Kommandozeilen-Schnittstelle, wo Benutzer einen Python Code eingeben könnten und führen Sie es (nicht nur Ausdrücke, sollten möglich sein, neue Funktionen zu definieren).

Also, wo Sie anfangen sollen? Gibt es gute Tutorials oder Proben zur Verfügung?

War es hilfreich?

Lösung 4

Thru Ironpython-Mailingliste fand ich IronTextBox2 , was gutes Beispiel dafür ist, wie Dinge getan werden. Es ein wenig Gefummel braucht, um es läuft, aber sonst ist gute Lösung.

Andere Tipps

Wenn meine mich recht erinnere gibt es ein Kapitel über Python Einbettung in das Buch Python in a Nutshell . Vielleicht können Sie einige nützliche Informationen dort finden, aber da das Buch nicht Windows-spezifisch ist, müssen Sie unter Umständen es selbst anpassen.

Ich würde meine WinForm wie diese setyp: 2 Textfelder hinzufügen

.

1: für die Ausgabe. Legen Sie die mehrzeilige Eigenschaft des ersten zu wahren, und es nur machen lesen.

2: für die Eingabe. Verwenden KeyUp oder Tastendruckereignis für z.B. die Return-Taste und den Text verwenden, um zu tun, was Sie wollen: Befehl zur Ausgabe Textbox, Start-Code gegen den Motor hinzufügen und Ausgabe von Interpreter erfassen

Dieser Link ( http: // Gruppen. google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1 ) könnten einige Antworten geben zu starten Befehle agains ein python-Engine.

IronRuby kommt mit einem Kommandozeileninterpreter. Nicht Ironpython haben auch eins? Wenn ja, würde der Quellcode ein guter Anfang sein :) Ach ja, und wenn dies nicht der Fall, sollten Sie bei der IronRuby-Interpreter suchen, da beide Sprachen auf dem DLR basieren und sind daher ähnlich genug von beiden zu lernen.

Hier geht meine allgemeinste Lösung:

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

Sie können Setup einen Timer auf 60000 Intervall ausgeführt wird. Auf diese Weise werden Sie wissen, wie viele Minuten der Benutzer nicht die Mäuse bewegen. Sie können auch „isIdle“ auf dem Tick-Ereignisse nennen sich auf jedes Intervall zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top