Wie man Instanzen von Event für jeden einzelnen Tab auf Multi Tab GUI tkinter (Notebook-Widget)

Dies ist mein Code .. und ich brauche die Veranstaltung Bindung für alle Tabs die gleiche Zeit zu arbeiten .. das Problem ist, wenn neue Registerkarte, die Ereignis-Bindung wird auf die zuletzt generierte Registerkarte verwandt werden und nicht mehr für vorinstallierte Tabs ..please Hilfe – (python 2.7)

#!/usr/bin/env python import Tkinter from Tkinter import * import tkMessageBox import ttk root = Tkinter.Tk() root.minsize(300,300) root.geometry("1000x700") body=ttk.Notebook(root,width=1000,height=650,) tabs={'ky':1} def generate_tabs(tab,name): tab=Tkinter.Frame(body) entry=Entry(tab).pack(side=TOP) def alert(event): tkMessageBox.showinfo('alert1','FocusOut event is working for '+name) def printing(event): print event.keysym+' for '+name root.bind("<Key>",printing) tab.bind_class('Entry',"<FocusOut>",alert) body.add(tab,text=name) def start_generating(): if tabs['ky']==4:pass elif tabs['ky']==3: generate_tabs('tab4','tab4') ; tabs['ky']=4 elif tabs['ky']==2: generate_tabs('tab3','tab3') ; tabs['ky']=3 elif tabs['ky']==1: generate_tabs('tab2','tab2') ; tabs['ky']=2 else:pass generate_tabs('tab1','tab1') button=Button(root,text='generate',command=start_generating).pack(side=LEFT) body.pack(side=TOP) root.mainloop() 

  • Setzen Sie den Text eines Eintrags mit einem Button tkinter
  • Matplotlib Grundkarte: Popup-Box
  • Programmierung von Screenshots in Windows ohne die Anwendung bemerken
  • Wie kann ich ein System suspend Event in Python?
  • Wie kann ich erkennen, wann ein Button in Tkinter freigegeben wird?
  • Tkinter. Nach Methode Einfrieren Fenster?
  • Django: Bedeutung des führenden Unterstrichs in der Liste der Tupel, die verwendet werden, um Auswahlfelder zu definieren?
  • Was ist der Zweck der einzelnen Unterstrich "_" Variable in Python?
  • Underscore _ als Variablenname in Python [Duplikat]
  • One Solution collect form web for “Wie man Instanzen von Event für jeden einzelnen Tab auf Multi Tab GUI tkinter (Notebook-Widget)”

    Ich benutze die Klasse MyTab, um eine neue Registerkarte mit eigener Funktionsalarm zu erstellen (aufgerufen, wenn du den Eintrag konzentrierst) und den Druck (wenn du einen Eintrag eingibst).

    Ich benutze den print anstelle von tkMessageBox weil das Messagebox den Eintrag auf die neu ausgewählte Registerkarte ausführt (wenn du die Registerkarte änderst), so dass du keine Messagebox von der vorherigen Registerkarte, sondern von der aktuellen Registerkarte sehst.

     #!/usr/bin/env python from Tkinter import * import tkMessageBox import ttk #--------------------------------------------------------------------- class MyTab(Frame): def __init__(self, root, name): Frame.__init__(self, root) self.root = root self.name = name self.entry = Entry(self) self.entry.pack(side=TOP) self.entry.bind('<FocusOut>', self.alert) self.entry.bind('<Key>', self.printing) #------------------------------- def alert(self, event): print 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get() #tkMessageBox.showinfo('alert', 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get()) #------------------------------- def printing(self, event): print event.keysym + ' for ' + self.name #--------------------------------------------------------------------- class Application(): def __init__(self): self.tabs = {'ky':1} self.root = Tk() self.root.minsize(300, 300) self.root.geometry("1000x700") self.notebook = ttk.Notebook(self.root, width=1000, height=650) # self.all_tabs = [] self.addTab('tab1') self.button = Button(self.root, text='generate', command=self.start_generating).pack(side=BOTTOM) self.notebook.pack(side=TOP) #------------------------------- def addTab(self, name): tab = MyTab(self.notebook, name) self.notebook.add(tab, text=name) # self.all_tabs.append(tab) #------------------------------- def start_generating(self): if self.tabs['ky'] < 4: self.tabs['ky'] += 1 self.addTab('tab'+ str(self.tabs['ky'])) #------------------------------- def run(self): self.root.mainloop() #---------------------------------------------------------------------- Application().run() 
    Python ist die beste Programmiersprache der Welt.