IDLEのような機能をWinFormsアプリケーションに作成する方法
-
03-07-2019 - |
質問
「IDLEのような機能」を追加したいC#WinFormsアプリケーションを使用しますが、それを行う方法がまったくわからず、Googleで有用なものが見つかりませんでした。
したがって、基本的には、ユーザーがPythonコードを入力して実行できるインタラクティブなコマンドラインインターフェイスが必要です(式だけでなく、新しい関数を定義できる必要があります)。
では、どこから始めますか?利用可能な優れたチュートリアルやサンプルはありますか?
解決 4
IronPythonメーリングリストを通じて IronTextBox2 を見つけました。物事は完了です。実行するには少し調整する必要がありますが、それ以外の場合は良い解決策です。
他のヒント
私の記憶が正しく機能する場合、Pythonの埋め込みに関する章 Python in a Nutshell 。おそらくそこにいくつかの有用な情報を見つけることができますが、本はWindows固有ではないので、自分で調整する必要があるかもしれません。
WinFormを次のように設定します。2つのテキストボックスを追加します。
1:出力用。最初のマルチラインプロパティをtrueに設定し、読み取り専用にします。
2:入力用。たとえば、KeyUpまたはKeyPressイベントを使用します。 Returnキーを押し、テキストを使用して目的の操作を実行します。出力テキストボックスにコマンドを追加し、エンジンに対してコードを起動し、インタープリターの出力をキャプチャします
このリンク( http:// groups。 google.com/group/ironpy/browse_thread/thread/5e61a944c7c94d4b/0cbf29ec0f5fbb64?pli=1 )は、Pythonエンジンに対してコマンドの起動に関するいくつかの回答を提供する場合があります。
IronRubyにはコマンドラインインタープリターが付属しています。 IronPythonにもありませんか?もしそうなら、ソースコードは良いスタートでしょう:) ああ、そうでない場合は、IronRubyインタープリターを確認してください。どちらの言語もDLRに基づいているため、両方から学習できるほど類似しているためです。
ここで私の最も一般的なソリューションをご覧ください:
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;
}
60000間隔で実行されるタイマーを設定できます。これにより、ユーザーがマウスを動かさない時間を知ることができます。また、「isIdle」を呼び出すこともできます。 Tickイベント自体で各間隔を確認します。