ホームページ >バックエンド開発 >Python チュートリアル >Tkinter アプリケーションの異なるクラス間でデータを共有するにはどうすればよいですか?
tkinter で他のページからデータにアクセスする場合、次のことが重要です。ターゲットとする特定のページへの参照を取得します。あなたの場合、PageTwo は PageOne から self.v 変数を取得する必要があります。
Tkinter はこれのための簡単なメカニズムを提供します。各ページのコンストラクターに self.controller 属性を追加します。これにより、コントローラー オブジェクトへのアクセスが可能になります。コントローラーはすべてのページへの参照を保持しているため、任意のページの参照を取得できます。
次の行を各ページのコンストラクターに追加して、self.controller 属性を確立します。
self.controller = controller
次に、次の行を追加します。ページ参照を取得するための SampleApp クラスへの get_page メソッド:
class SampleApp(tk.Tk): ... def get_page(self, page_class): return self.frames[page_class] ...
これで、任意のページ内で別のページにアクセスできるようになります。コントローラーの get_page メソッドを使用してページのオブジェクトを取得します。たとえば、PageTwo では、次のように PageOne の v 変数にアクセスできます。
page1 = self.controller.get_page(PageOne) page1.v.set("Hello, world")
より洗練された解決策は、すべてのページがアクセスできる共有データを作成することです。 SampleApp クラスで辞書を初期化し、コントローラーを介して各ページへのアクセスを許可します:
class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.shared_data = { "username": tk.StringVar(), "password": tk.StringVar(), ... }
その後、ページはコントローラーを介して共有データにアクセスできます:
entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"]) username = self.controller.shared_data["username"].get()
共有データの利用により、緩いアクセスが促進されます。結合により、他のページに影響を与えることなくページの変更が簡単になります。コントローラーは中心的な参照点として機能し、ページ間の依存関係を軽減します。
以上がTkinter アプリケーションの異なるクラス間でデータを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。