Cara Mengakses Data Pembolehubah Antara Kelas dalam Aplikasi Berbilang Halaman
Dalam aplikasi berbilang halaman di mana setiap halaman ditakrifkan oleh kelas berasingan, mengakses data pembolehubah antara kelas boleh menjadi mencabar.
Memanfaatkan Pengawal
Satu pendekatan ialah menggunakan kelas pengawal aplikasi untuk memudahkan komunikasi antara halaman. Tambahkan rujukan kepada pengawal pada setiap pembina halaman:
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller ...</code>
Seterusnya, tambahkan kaedah pada pengawal yang mendapatkan semula contoh halaman yang diberi 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 return None</code>
Kemudian, daripada dalam satu halaman, anda boleh mengakses data pembolehubah 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() print ('The value stored in StartPage some_entry = %s' % value)</code>
Menyimpan Data dalam Pengawal
Untuk mengelakkan gandingan yang ketat antara halaman, pertimbangkan untuk menyimpan data dalam pengawal dan bukannya dalam halaman tertentu:
<code class="python">class MyApp(Tk): def __init__(self): ... self.app_data = {"name": StringVar(), "address": StringVar(), ... }</code>
Kemudian, dalam setiap halaman, rujuk 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>
Akhir sekali, akses data daripada pengawal terus:
<code class="python"> def print_it(self): value = self.controller.app_data["address"].get() ...</code>
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Data Antara Kelas dalam Aplikasi Berbilang Halaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!