如何從類別中取得變數資料
在 GUI 程式設計環境中,單一應用程式視窗中存在多個頁面是很常見的。每個頁面可能包含各種小部件,例如輸入欄位、按鈕或標籤。當與這些小部件互動時,使用者提供輸入或做出需要在不同頁面之間共享的選擇。這就提出瞭如何從一個類別存取另一個類別的變數資料的問題,特別是當這些類別代表不同的頁面時。
利用控制器
一種有效的方法涉及利用控制器類別的概念。在您提供的程式碼片段中,您有一個管理多個頁面的 MyApp 類,例如 PageOne 和 PageTwo。通常,控制器充當應用程式不同部分之間的中介並促進溝通。以下是如何使用控制器取得變數資料:
-
在每個頁類中加入控制器的參考:
<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</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()</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">class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["address"].get()</code>
透過實作其中一種方法,您可以在GUI 應用程式中的不同頁麵類別之間有效地共用變數資料。基於控制器的方法提供了緊密耦合和集中的通訊控制點,同時將資料儲存在控制器中促進了解耦和靈活性。方法的選擇取決於應用程式的具體要求以及頁面之間所需的互動和資料共享的層級。
以上是如何在 GUI 應用程式中的不同頁面之間共用變數資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版