マルチページアプリケーションのクラス間でデータを共有するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-02 08:17:29
オリジナル
330 人が閲覧しました

How to Share Data Between Classes in a Multi-Page Application?

マルチページ アプリケーションのクラス間で変数データにアクセスする方法

各ページが

コントローラーの活用

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート