Search on blog:

Prosty przykład komunikacji między oknem rodzica i potomka w Tkinter

To jest "przedruk" mojej wypowiedzi na polskim forum Pythona http://pl.python.org/forum/index.php?topic=4366.msg18688#msg18688


Przeróbka poprzedniego przykładu - teraz przycisk w oknie Child zmienia napis na przycisku w oknie Main dzięki temu, że rodzic przekazuje self do dziecka. Dodatkowo dziecko wywołuje funkcje onButton() należącą do rodzica.

import Tkinter as tk

#----------------------------------------------------------------------

class Main(tk.Tk): # dziedziczenie po klasie tk.Tk

    def __init__(self):
        tk.Tk.__init__(self) # wywolanie konstruktora klasy tk.Tk
        self.title("Main") # wewnetrzny dostep do wlasnosci okna

        self.button = tk.Button(self, text="Otworz okno Child z okna Main", command=self.onButton)
        self.button.grid()

    def onButton(self):
        self.child = Child(self) # przekazanie okna jako rodzica

    def run(self):
        self.mainloop()

#----------------------------------------------------------------------

class Child(tk.Toplevel): # dziedziczenie po klasie tk.Toplevel

    def __init__(self, parent):
        self.parent = parent

        tk.Toplevel.__init__(self, parent) # wywolanie konstruktora klasy tk.Toplevel
        self.title("Child") # wewnetrzny dostep do wlasnosci okna

        tk.Button(self, text="Zamien tekst na przycisku w oknie Main", command=self.onButton).grid()

    def onButton(self):
        self.parent.button['text'] = 'Nowy tekst na przycisku rodzica'
        self.parent.onButton()

#----------------------------------------------------------------------

glowne = Main()
glowne.title("Glowne") # zewnetrzny dostep do wlasnosci okna
glowne.run()
If you like it
Buy a Coffee