マルチページ アプリケーションのクラス間で変数データにアクセスする方法
各ページが
コントローラーの活用
1 つのアプローチは、アプリケーション コントローラー クラスを使用してページ間の通信を容易にすることです。各ページのコンストラクターにコントローラーへの参照を追加します。
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller ...</code>
次に、クラス名を指定してページ インスタンスを取得するメソッドをコントローラーに追加します。
<code class="python">class MyApp(Tk): ... def get_page(self, classname): for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page return None</code>
次に、 1 つのページ内で、別のページの変数データにアクセスできます。
<code class="python">class PageTwo(ttk.Frame): ... def print_it(self): page_one = self.controller.get_page("PageOne") value = page_one.some_entry.get() print ('The value stored in StartPage some_entry = %s' % value)</code>
コントローラーへのデータの保存
ページ間の密結合を避けるために、データをコントローラーに保存することを検討してください。特定のページではなくコントローラーを使用します:
<code class="python">class MyApp(Tk): def __init__(self): ... self.app_data = {"name": StringVar(), "address": StringVar(), ... }</code>
次に、各ページ内で、ウィジェットを作成するときにコントローラーのデータ構造を参照します:
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller=controller ... self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"], ...) </code>
最後に、コントローラーからデータに直接アクセスします。
<code class="python"> def print_it(self): value = self.controller.app_data["address"].get() ...</code>
以上がマルチページアプリケーションのクラス間でデータを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。