如何在多頁面應用程式中的類別之間存取變數資料
在多頁面應用程式中,每個頁面都由單獨的類,存取類別之間的變數資料可能具有挑戰性。
利用控制器
一種方法是使用應用程式控制器類別來促進頁面之間的通訊。將控制器的參考加入到每個頁面的建構函式中:
<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>
然後,從在一個頁面內,您可以存取另一頁的變數資料:
<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中文網其他相關文章!