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

Barbara Streisand
Lepaskan: 2024-11-03 01:48:02
asal
381 orang telah melayarinya

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

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

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

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

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

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

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!

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