Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Data StringVar dari Satu Halaman Tkinter ke Halaman Lain?

Bagaimana untuk Mengakses Data StringVar dari Satu Halaman Tkinter ke Halaman Lain?

Barbara Streisand
Barbara Streisandasal
2024-11-03 01:48:02382semak imbas

How to Access StringVar Data from One Tkinter Page to Another?

Cara Mengakses Data Pembolehubah daripada Kelas

Ringkasan Masalah

Anda mempunyai berbilang halaman widget yang mengumpul input pengguna dalam aplikasi Tkinter berbilang halaman . Setiap halaman dijadikan sebagai kelas dalam aplikasi utama, tetapi anda menghadapi kesukaran untuk mendapatkan nilai StringVar daripada widget dalam satu halaman (PageOne) dalam halaman lain (PageTwo).

Penyelesaian: Memanfaatkan Pengawal anda

Menggunakan pengawal, anda boleh mewujudkan komunikasi antara halaman. Pertama, 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>

Kedua, masukkan kaedah dalam pengawal yang 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>

Dengan ini kaedah, halaman boleh mengakses satu sama lain dengan memanggil fungsi ini dan mendapatkan rujukan kepada halaman sasaran. Selepas itu, anda boleh mengakses ahli kongsi halaman itu, seperti:

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

Penyelesaian Alternatif: Menyimpan Data dalam Pengawal

Untuk mengelakkan gandingan yang ketat antara halaman, pertimbangkan untuk menyimpan data dikongsi dalam pengawal. Kaedah ini membenarkan halaman bebas daripada reka bentuk dalaman masing-masing:

<code class="python">class MyApp(Tk):
    def __init__(self):
        ...
        self.app_data = {"name":    StringVar(),
                         "address": StringVar(),
                         ...
                        }</code>

Ubah suai halaman untuk merujuk pengawal semasa membuat widget:

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

Akhir sekali, akses data daripada pengawal, hapuskan keperluan untuk get_page:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Data StringVar dari Satu Halaman Tkinter ke Halaman Lain?. 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
Artikel sebelumnya:Daripada Data kepada PenerapanArtikel seterusnya:Daripada Data kepada Penerapan