2009-04-29 5 views
0

Ich möchte "IDLE-ähnliche Funktionalität" zu C# WinForms-Anwendung hinzufügen, aber ich habe nicht ganz eine Idee, wie das zu tun ist und nichts nützliches finden konnte mit Google.Wie IDLE-ähnliche Funktionalität zu WinForms-Anwendung erstellen

Also im Grunde möchte ich interaktive Kommandozeilen-Schnittstelle, wo Benutzer einige Python-Code eingeben und ausführen (nicht nur Ausdrücke, sollte möglich sein, neue Funktionen zu definieren).

Also, wo soll ich anfangen? Gibt es gute Tutorials oder Beispiele?

Antwort

0

Thru IronPython Mailing-Liste Ich fand IronTextBox2, das ist ein gutes Beispiel, wie die Dinge gemacht werden. Es braucht ein wenig Feineinstellung, um es zum Laufen zu bringen, aber ansonsten ist es eine gute Lösung.

1

Wenn mein Gedächtnis mir richtig dient, gibt es ein Kapitel über die Einbettung von Python in das Buch Python in a Nutshell. Vielleicht finden Sie dort nützliche Informationen, aber da das Buch nicht Windows-spezifisch ist, müssen Sie es möglicherweise selbst anpassen.

+0

Ich denke, das ist ziemlich .NET spezifische Problem, so CPython bezogene Informationen ist im Grunde nutzlos. – Harriv

+0

Sie haben wahrscheinlich recht. Um ehrlich zu sein, ich weiß nicht, wie viel sich von CPython auf IronPython übertragen wird. –

+0

Und ich denke nicht. Syntax und die meisten Bibliotheken sind gleich. – Migol

0

IronRuby kommt mit einem Befehlszeileninterpreter. Hat IronPython nicht auch einen? Wenn ja, wäre der Quellcode ein guter Anfang :) Oh, und wenn nicht, dann sieh dir den IronRuby-Interpreter an, denn beide Sprachen basieren auf dem DLR und sind daher ähnlich genug, um von beiden zu lernen.

+0

Es ist Textmodus-Anwendung, ist der IronPyhton-Interpreter in WinForms-Anwendung eingebettet? – Harriv

+0

Der IronRuby-Interpreter wird in der Befehlszeile ausgeführt. Ich weiß nicht, wie der IronPython-Interpreter, falls verfügbar, funktioniert, aber ich schlage vor, nur in der IronPython-Distribution danach zu suchen. Es ist nichts falsch daran, nur nach dem zu suchen, wonach Sie suchen. – OregonGhost

1

Ich würde meine WinForm so einstellen: 2 Textfelder hinzufügen.

1: für die Ausgabe. Setzen Sie die Eigenschaft multiline des ersten auf true und machen Sie sie schreibgeschützt.

2: für die Eingabe. Verwenden Sie KeyUp oder KeyPress-Ereignis für z. die Return-Taste und verwenden Sie den Text zu tun, was Sie wollen: Befehl zur Ausgabe Textfeld hinzufügen, starten Sie den Code gegen die Engine und Capture-Ausgang des Interpreters

Dieser Link (http://groups.google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1) könnte einige Antworten zum Starten von Befehlen gegen eine Python-Engine geben.

0

Hier gehen 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 einen Timer-Setup auf 60000 Intervall ausgeführt wird. Auf diese Weise wissen Sie nur, wie viele Minuten der Benutzer die Mäuse nicht bewegt. Sie können auch "isIdle" im Tick-Ereignis selbst aufrufen, um jedes Intervall zu überprüfen.

+0

Entschuldigung, Sie haben die Frage nicht sorgfältig genug gelesen. IDLE ist Python IDE, die mit Python-Interpreter kommt. – Harriv

Verwandte Themen