Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menghantar Data Antara Halaman dalam Aplikasi Berbilang Halaman Tkinter?
Masalah:
Dalam aplikasi berbilang halaman menggunakan Tkinter, bagaimana bolehkah kelas pada satu halaman mengakses data pembolehubah yang disimpan dalam kelas pada halaman lain?
Memanfaatkan Pengawal Anda:
Dengan mengandaikan anda sudah menggunakan pengawal, anda boleh mengeksploitasinya untuk komunikasi antara halaman.
Simpan rujukan kepada pengawal dalam setiap halaman:
<code class="python">class PageOne(ttk.Frame): def __init__(self, parent, controller): self.controller = controller ... class PageTwo(ttk.Frame): def __init__(self, parent, controller): self.controller = controller ...</code>
Buat kaedah dalam pengawal untuk mendapatkan semula halaman berdasarkan nama kelasnya:
<code class="python">class MyApp(Tk): def get_page(self, classname): '''Returns an instance of a page given it's class name as a string''' for page in self.frames.values(): if str(page.__class__.__name__) == classname: return page return None</code>
Dalam halaman yang perlu mengakses data, gunakan kaedah get_page:
<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 mengurangkan gandingan antara halaman, pertimbangkan untuk menyimpan data yang dikongsi dalam pengawal.
Buat struktur data dalam pengawal untuk menyimpan pembolehubah:
<code class="python">class MyApp(Tk): def __init__(self): ... self.app_data = {"name": StringVar(), "address": StringVar(), ... }</code>
Kemas kini halaman untuk merujuk data pengawal:
<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 daripada pengawal:
<code class="python"> def print_it(self): value = self.controller.app_data["address"].get() ...</code>
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Data Antara Halaman dalam Aplikasi Berbilang Halaman Tkinter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!