首頁 > 後端開發 > Python教學 > 如何在多頁面應用程式中的類別之間共享資料?

如何在多頁面應用程式中的類別之間共享資料?

Barbara Streisand
發布: 2024-11-02 08:17:29
原創
342 人瀏覽過

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

如何在多頁面應用程式中的類別之間存取變數資料

在多頁面應用程式中,每個頁面都由單獨的類,存取類別之間的變數資料可能具有挑戰性。

利用控制器

一種方法是使用應用程式控制器類別來促進頁面之間的通訊。將控制器的參考加入到每個頁面的建構函式中:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板