2011-01-31 7 views
0

私はGUIウィジェットのstdinとkey_eventsについてかなり混乱しています。GUIウィジェットと標準のkey_events

私は通常、stdinがプロセスのキーボード入力を取得する通常の方法だと考えました。たとえば、プロセスがある場合は、標準入力を使用してキーボード入力を行うことができます。これは通常、キーボード入力を得るためにサブプロセスのI/O方向を作るために使用されます。例えば、私はサブプロセスを作ることができました.Popen(stdin = PIPE)

一方、GUIの場合は、wx.TexCtrlまたはpy.Shell.shellを使用して、入力などのキーイベントをキャッチします。

私はGUIまたはpyShellを実行しているときにキーボードを使って入力したときに、標準入力またはGUIキーイベント捕捉システム経由でこれを聞いていますか? GUIキーイベントシステムを介している場合、どのようにキーボードの標準入力を得ることができますか?通常のGUI以外のプログラミングとして、キーボード入力を私の子プロセス(GUI内)にリダイレクトすることはできますか?

ありがとうございます。

答えて

2

入力時に、入力はGUIイベント・メカニズムではなく、 stdinから取得されます。あなたは "キーボードの標準入力"を得る方法を尋ねました。その答えは、他のタイプのプログラムと同じです:あなたはそれを読んでいます(しかし、それはほぼ確実に空です)。デスクトップ上のアイコンをダブルクリックして起動した場合、おそらくGUIには標準がないことに気付くことが重要です。

あなたの質問がわかっていれば、キーボード入力を[あなたの子プロセス]にリダイレクトすることはできません。 StdinはまったくGUIと全く関係ありません。 GUIを介してキーボード入力を読み込む方法は、stdinから完全に切り離されています。

+0

ブライアン、お返事ありがとうございました。私はあなたの答えを最初にクリックします。あなたの答えに基づくちょっとした質問。 sys.stdinがまだ存在する場合は、GUIプログラム、ファイル、キーボードから入力することはできますか?私がbashのpythonからwxPythonのGUIを起動すると、bashウィンドウのsys.stdinですか?また、あなたが記述したところから、GUIのsys.stdinの使用法はないようですが、sys.stdoutはtextctrlウィジェットの情報を表示するのに便利なことがあります。だから、pyCrustやGUIベースのシェルは、実際にはsys.stdoutを使用せずにsys.stdoutしか使用していませんでした。 – pepero

+0

@pepero:いいえ、キーボードからstdinに入力することはできませんが、適切な量のコードを使用すると、 '' echo hello ''のようなものでguiにパイプすることができます。 mygui'です。私はそれが価値があるだろう使用事例は考えられません。 –

+0

私は1つのユースケースがパイプを通過するデータのGUIビューアを挿入することを想像しています。特に重要でないパイプチェーンではあなたの入力ストリームが高水準である場合、スレッディングは適切かもしれません。 GUI APIは通常、非同期イベントハンドラとして設計されているため、あなたのデータがあなたのUIアップデートより速くバッファリングされることを意味します。 – DevPlayer

関連する問題