Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Berkongsi Data Antara Kelas Berbeza dalam Aplikasi Tkinter?

Bagaimana untuk Berkongsi Data Antara Kelas Berbeza dalam Aplikasi Tkinter?

Linda Hamilton
Linda Hamiltonasal
2024-11-26 02:32:13333semak imbas

How to Share Data Between Different Classes in a Tkinter Application?

Bagaimana untuk Mengakses Pembolehubah daripada Kelas Berbeza dalam tkinter?

Mengakses Data daripada Halaman Lain

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")

Menggunakan Data Dikongsi

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn