Dalam konteks pengaturcaraan GUI, adalah perkara biasa untuk mempunyai berbilang halaman dalam satu tetingkap aplikasi. Setiap halaman mungkin mengandungi pelbagai widget, seperti medan masukan, butang atau label. Apabila berinteraksi dengan widget ini, pengguna memberikan input atau membuat pilihan yang perlu dikongsi di seluruh halaman yang berbeza. Ini menimbulkan persoalan tentang cara mengakses data pembolehubah dari satu kelas ke kelas yang lain, terutamanya apabila kelas tersebut mewakili halaman yang berbeza.
Satu pendekatan berkesan melibatkan memanfaatkan konsep kelas pengawal . Dalam coretan kod yang anda berikan, anda mempunyai kelas MyApp yang mengurus berbilang halaman, seperti PageOne dan PageTwo. Biasanya, pengawal bertindak sebagai pengantara antara bahagian aplikasi yang berbeza dan memudahkan komunikasi. Begini cara anda boleh menggunakan pengawal untuk mendapatkan data berubah:
Tambah rujukan kepada pengawal dalam setiap kelas halaman:
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller</code>
Buat kaedah dalam pengawal untuk mendapatkan tika halaman dengan nama kelasnya:
<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>
Akses ahli awam daripada halaman sasaran dari halaman lain:
<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>
Sebagai alternatif, anda boleh mempertimbangkan untuk menyimpan data yang dikongsi dalam pengawal itu sendiri, bukannya dalam kelas halaman. Pendekatan ini memisahkan halaman daripada satu sama lain dan mengurangkan keperluan untuk gandingan yang ketat antara mereka. Begini cara ia boleh dilaksanakan:
Buat struktur data dalam pengawal untuk menyimpan semua data yang dikongsi:
<code class="python">class MyApp(Tk): def __init__(self): self.app_data = {"name": StringVar(), "address": StringVar()}</code>
Ubah suai setiap halaman untuk merujuk struktur data pengawal semasa membuat widget:
<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>
Akses data kongsi daripada pengawal dan bukannya kelas halaman:
<code class="python">class PageTwo(ttk.Frame): def print_it(self): value = self.controller.app_data["address"].get()</code>
Dengan melaksanakan salah satu pendekatan ini, anda boleh berkongsi data pembolehubah secara berkesan antara kelas halaman yang berbeza dalam aplikasi GUI anda. Pendekatan berasaskan pengawal menyediakan gandingan yang ketat dan titik kawalan terpusat untuk komunikasi, sementara menyimpan data dalam pengawal menggalakkan penyahgandingan dan fleksibiliti. Pilihan pendekatan bergantung pada keperluan khusus aplikasi anda dan tahap interaksi serta perkongsian data yang diperlukan antara halaman.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Data Pembolehubah Antara Halaman Berbeza dalam Aplikasi GUI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!