Apabila mengakses data daripada halaman lain dalam tkinter, adalah penting untuk mempunyai rujukan kepada halaman khusus yang anda sasarkan. Dalam kes anda, PageTwo perlu mendapatkan semula pembolehubah self.v daripada PageOne.
Tkinter menyediakan mekanisme mudah untuk ini. Tambahkan atribut self.controller pada setiap pembina halaman, yang memberikan akses kepada objek pengawal. Pengawal memegang rujukan kepada semua halaman, membolehkan anda mendapatkan semula rujukan halaman.
Tambah baris berikut pada setiap pembina halaman untuk mewujudkan atribut self.controller:
self.controller = controller
Seterusnya, tambah kaedah get_page ke kelas SampleApp untuk mendapatkan halaman rujukan:
class SampleApp(tk.Tk): ... def get_page(self, page_class): return self.frames[page_class] ...
Kini, dalam mana-mana halaman, anda boleh mengakses objek halaman lain menggunakan kaedah get_page pengawal. Sebagai contoh, dalam PageTwo, anda boleh mengakses pembolehubah v PageOne seperti berikut:
page1 = self.controller.get_page(PageOne) page1.v.set("Hello, world")
Penyelesaian yang lebih elegan ialah mencipta data kongsi yang boleh diakses oleh semua halaman. Mulakan kamus dalam kelas SampleApp dan berikan setiap halaman akses melalui pengawal:
class SampleApp(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) self.shared_data = { "username": tk.StringVar(), "password": tk.StringVar(), ... }
Halaman kemudiannya boleh mengakses data yang dikongsi melalui pengawal:
entry1 = tk.Entry(self, textvariable=self.controller.shared_data["username"]) username = self.controller.shared_data["username"].get()
Menggunakan data kongsi menggalakkan longgar gandingan, menjadikan pengubahsuaian halaman lebih mudah tanpa menjejaskan halaman lain. Pengawal berfungsi sebagai pusat rujukan, mengurangkan kebergantungan antara halaman.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Data Antara Kelas Berbeza dalam Aplikasi Tkinter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!