Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Data Antara Halaman dalam Aplikasi Berbilang Halaman Tkinter?

Bagaimana untuk Menghantar Data Antara Halaman dalam Aplikasi Berbilang Halaman Tkinter?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 09:12:02159semak imbas

How to Pass Data Between Pages in a Tkinter Multi-Page Application?

Cara Mengakses Data Pembolehubah daripada Kelas

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.

  1. 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>
  2. 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>
  3. 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.

  1. 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>
  2. 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>
  3. 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!

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