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