すべてのtkinterチュートリアル私は、ウィンドウが描画され、イベントが処理されるためにはtkinter.mainloop
が呼び出されなければならず、hello worldプログラムでも常にこの関数を呼び出しているという主張を見てきました。しかし、対話型シェルでこれらを試してみると、メインループを呼び出さなくてもウィンドウが正しく描画されます。 This exampleは、tkinterにmatplotlibグラフィックスを埋め込むために、比較的複雑なアプリケーションを作成します.Tkinterウィンドウ内のプロットをパン、ズーム、サイズ変更するためのボタンがあります。また、mainloopへの呼び出しを削除してインタラクティブシェルでコードを実行すると、もちろん、対話シェルの外でスクリプトを実行しても、プログラムはあまりにも早く終了して何が起こるかを知ることができますが、プログラムを開くためにinput
への呼び出しを追加すると正しく動作します(私はpython 3.2.2 on Linux)。Tkinterアプリケーションでmainloopを呼び出す必要はありますか?
それでは、mainloopは正確に何を行いますか、それをいつ呼び出す必要がありますか?
EDIT: は明確にするために、私はGNOMEターミナルを開き、
$python3
>>> import tkinter
>>> root = tkinter.Tk()
ウィンドウがすぐに表示されたメインループを呼び出すことなく、入力して、より複雑なTkinterの機能は、例えば(同様に動作すると思われる場合は、ウィンドウにボタンを追加する)。 IDLEでは、mainloopを呼び出す必要があります。メインループが呼び出されるまで、何も描画しないで、イベントを処理する必要はありません。
申し訳ありませんが、私が言及している必要があります:私は(明らかにCで書かれている)GNOME端末に(アイドルでない)標準のpythonシェルを使用しています。だから私が見る限り、自分のコードを除いて、何もtkinterに影響を与えるものは何もしてはいけません。 – James
IDLEで同じことを試したところ、同じ動作をしません。メインループを呼び出すまではウィンドウが表示されません。 – James