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

Patricia Arquette
Lepaskan: 2024-11-02 09:12:02
asal
153 orang telah melayarinya

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>
    Salin selepas log masuk
  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>
    Salin selepas log masuk
  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>
    Salin selepas log masuk

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>
    Salin selepas log masuk
  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>
    Salin selepas log masuk
  3. Akses data daripada pengawal:

    <code class="python"> def print_it(self):
         value = self.controller.app_data["address"].get()
         ...</code>
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!