2016-11-20 8 views
0

これまでは、インターフェイスごとに異なるモジュールを作成し、スプラッシュ画面にログインしてからメインインターフェイスにログインし、各モジュールにmain_windowを渡しました。python tkinterコードのレイアウト

class MainWindow(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 

次に、これを各モジュールに渡します。私は、より良い方法とtkinter GUIを作成するためのより組織化された方法があると考えています。 1つのモジュールにすべての画面を作成して呼び出すか、別々のモジュールを作成しますか?

EDIT私はフルそれらを理解していないとのTkとトップレベルの、について説明もいいだろう、私は通常のTkを(使用)

私は、tk.Tkオブジェクトとしての用途クラスに比較的新しいです。どんなアドバイスやコードレイアウトの例もいいでしょう。

+0

'Tk'はメインウィンドウを作成します。メインウィンドウは1つだけ使用してください。 'Toplevel'は他のウィンドウを作成します - あなたは他の多くのウィンドウを使うことができます。たぶん 'Frame'を使ってウィジェットを作成し、それを' Tk'や 'Toplevel'といった任意のウィンドウに追加することができます。 – furas

+0

main_windowを作成してから、メインウィンドウをパラメータ経由で各モジュールに渡すのがいいですか?それとも、すべてのインターフェースを1つのファイルに入れるべきですか? –

+0

他のウィジェットを見る - 常に最初の引数として 'parent'を渡します。 'Tk'、' Toplevel'などのウィジェットにすることができます。 'フレーム'。この方法で、メインウィンドウやポップアップ/ダイアログウィンドウ、または他のウィジェットの要素として使用できます。 – furas

答えて

1

ウィジェットは、ルートが1つのツリー状の階層構造で存在します。ルートウィンドウはToplevelですが、それはルートウィンドウなのでいくつかの特別な動作があります。単一ルートウィンドウとToplevelのすべてのインスタンスは、画面上に浮かぶ独立したウィンドウです。

tkinterアプリケーションが正常に動作するためには、1つのルートウィンドウが必要ですが、必要な数がToplevelである可能性があります。ルートウィンドウを明示的に作成しないと、最初に他のウィジェットを作成しようとするときに作成されます。この動作に依存するtkinterコードを書くべきではありません。明示的は暗黙的より優れています。

各インターフェイスを別々のモジュールに定義し、ルートウィンドウのインスタンスを他のウィンドウのコンストラクタに渡すことは、非常に妥当であり、しばしば望ましいことです。

+0

ありがとう!私の答えに見られるメインウィンドウのように、ルートウィンドウ上にある各ウィジェットのフレームをオブジェクトとして作成することも賢明ですか? –

+0

@JoshuaNixon:「私の答えに見られるように」あなたが何を意味するのか分かりません。あなたの答えが表示されず、質問のコードにフレームが含まれていません。 –

+0

ありがとうございました!私の質問に見られるように私がメインウィンドウのために行ったように、オブジェクトとしてルートウィンドウにある各ウィジェットのフレームを作成することも賢明ですか?私はどのように私はメインウィンドウを行うように各フレームを作成する必要があります。各フレームのクラスを作成するtk.Frame .__ init__など –