2016-03-21 2 views
1

私はTkinterのでGUIを作成する方法を学習されていると疑問が私に起こりました。プログラムをテストしているときに、コードのインスタンスがバックグラウンドで既に存在している間にコードを構築することがよくあります。これらの2つは機能を果たすという点で互いに独立していますか?私はTk()のインスタンスを作成してmainloop()を実行すると、そのことを常に読んできました。別のTk()インスタンスに関係する場合、2つ以上のループを実行できますか?Tk()クラスの各インスタンスは、互いに独立して動作していますか?

+0

あなたは何を意味するか:。** 1 ** *私は、多くの場合、それのインスタンスが既にバックグラウンドで存在している間コードをビルド終わりますか*。? ** 2。** * 2つ以上のループを走らせることはできますか?*あなたは 'mainloop()'を意味しますか? –

+0

私はコードをテストしていますが、プログラムの機能をテストするコードを実行します。コードを再実行する前に閉じていないことがあるので、同時に2つのインスタンスを実行していることがあります。私はこれらが2つの別々のインスタンスであるかどうか、そして私の思考が正しいかどうかを知りたかったのです。 –

+0

はい、私はmainloop()を意味します。ありがとう。 –

答えて

-1

はい、Toplevelウィジェットで作成されたもの以外にtkinterのすべての個別のウィンドウは、独自のTk()インスタンスで表され、そのようなウィンドウはいくつでも同時に存在できます。

+0

私は専門用語の使用が適切であるかわからないからです。 「すべての個々のウィンドウ」は、「Toplevel」ウィジェットが「Tk()」によって表現されていることを意味するように見えます。これはfalseです。 –

+0

@ブライアン修正のおかげで!私は実際には前に 'Toplevel'ウィジェットについて聞いたことはありませんでした。 – StardustGogeta

+0

この文は偽です:_ "すべての個々のウィンドウ...は、それ自身の' Tk() 'インスタンス" _によって表されます。ウィジェットは木のような階層構造になっており、階層の最上部には単一のルートウィンドウ(および 'Tk'のインスタンス)があります。 'Tk'のインスタンスは1つしかありません。 –

1

Tkの各インスタンスは、Tkの他のインスタンスとは別個です。基礎となるtclインタプリタの独自のコピーを取得します。同じプロセスの2つのインスタンスTkは、2つのアクティブなtclインタープリタを持つことを意味します。

一般的なルールとして、Tkというインスタンスを1つだけ使用する必要がありますが、動作の仕組みを十分に理解していれば、2つ以上のインスタンスを持つことができます。

私は、これはあなたがそれらを行うべきではない理由を理解するまで、あなたがやるべきではない、物事のカテゴリに分類されると思います。一度理解すれば、あなたはそれをしたくないでしょう。

+0

'Tk'の2つのインスタンスを実行するのがなぜ悪いのでしょうか? –

+0

@SebastianFreeman:悪いことはありません。期待通りの行動を取ることはできません。 1つは、複雑なコードに常につながる複数のスレッドが必要です。複数の未亡人が必要な場合は、 'Tk'の2つのインスタンスを試してみるよりはるかに優れた解決策があります。 –

+0

どの時点で複数のスレッドが必要ですか? –

関連する問題