質問:
マルチページ Tkinter の場合アプリケーションでは、あるページ内の別のページ内のエントリ ウィジェットから変数データにどのようにアクセスしますか?すべての試行で例外が発生します。
コントローラの活用方法:
アプリの既存のコントローラの概念を考慮して、それを使用してページ間の通信を促進します。
それぞれにコントローラー参照を保存しますpage:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller
指定されたクラス名でページを返すコントローラー メソッドを作成します:
class MyApp(Tk): def get_page(self, classname): for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page
他のパブリック メンバーにアクセスページ:
class PageTwo(ttk.Frame): def print_it(self): page_one = self.controller.get_page("PageOne") value = page_one.some_entry.get()
コントローラーへのデータの保存:
密結合を回避するには、コントローラーへのデータの保存を検討してください:
コントローラー内にデータ構造を作成します (例: Dictionary):
class MyApp(Tk): def __init__(self): self.app_data = {"name": StringVar()}
ウィジェットの作成時にコントローラーを参照するようにページを変更します:
class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller=controller self.some_entry = ttk.Entry(self, textvariable=self.controller.app_data["name"])
コントローラーからデータにアクセスします:
class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["name"].get()
以上がマルチページ Tkinter アプリケーションのエントリ ウィジェットから変数データにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。