Tasmotanizer
Tasmotanizer

Reputation: 377

Get tkinter window that triggered event?

When a resize event is triggered, how could I retrieve the toplevel, from which this event was triggered?

I have written a small programm, where the main window has a button that opens another window and each new window gets a binding for the resize method that currently prints the height and width of the window. In the main project, the toplevel is used as an index for lists to retrieve information for that specific window, so it would be ideal to be able to retrieve the toplevel as well. Is that possible, either directly or indirectly?

import tkinter as tk 

class MyApp(tk.Frame):
    def __init__(self, master = None):
        self.main() 
        tk.Frame.__init__(self, master) 

    def main(self):
        btn = tk.Button(root, text="New Window", command=self.neues_fenster)
        btn.grid(row=0, column = 0)
    def neues_fenster(self):
        top = tk.Toplevel() 
        top.title("Some Window")   
        top.minsize(width = 150, height = 150) 
        top.bind("<Configure>", self.resize) 

    def resize(self, event):
        print("width", event.width, "height", event.height)

if __name__=="__main__":            
    root = tk.Tk()
    myapp = MyApp(master = root)
    myapp.mainloop()    

Upvotes: 0

Views: 356

Answers (1)

jizhihaoSAMA
jizhihaoSAMA

Reputation: 12672

In effbot document,You could use event.widget to get the widget.(It is also okay even if it is toplevel).

All the possible attributes of event: enter image description here

Upvotes: 1

Related Questions