widgets tutorial listas entry botones python function lambda tkinter tk

tutorial - Usando Lambda y tuplas para enviar a Funciones MĂșltiples: Python, Tkinter



tkinter widgets (1)

En la línea en la que creas tu botón, puedes lograr esto con un truco lambda (estúpido):

tk.Button(self,text=b[0],width=5,height=2, bg="grey", command=lambda text=b:[self.name(text[1]), self.info(text[2])] ).grid(row=r,column=c)

o define una función separada que llama a ambos:

tk.Button(self,text=b[0],width=5,height=2, bg="grey", command=lambda text=b:self.call_both(text)).grid(row=r,column=c) def call_both(self, line): self.name(line[1]) self.info(line[2])

column1 = [ (''H'', ''Hydrogen'', ''Atomic # = 1/nAtomic Weight =1.01/nState = Gas/nCategory = Alkali Metals''), (''Li'', ''Lithium'', ''Atomic # = 3/nAtomic Weight = 6.94/nState = Solid/nCategory = Alkali Metals''), (''Na'', ''Sodium'', ''Atomic # = 11/nAtomic Weight = 22.99/nState = Soild/nCategory = Alkali Metals''), (''K'', ''Potassium'', ''Atomic # = 19/nAtomic Weight = 39.10/nState = Solid/nCategory = Alkali Metals''), (''Rb'', ''Rubidium'', ''Atomic # = 37/nAtomic Weight = 85.47/nState = Solid/nCategory = Alkali Metals''), (''Cs'', ''Cesium'', ''Atomic # = 55/nAtomic Weight = 132.91/nState = Solid/nCategory = ALkali Metals''), (''Fr'', ''Francium'', ''Atomic # = 87/nAtomic Weight = 223.00/nState = Solid/nCategory = Alkali Metals'')] #create all buttons with a loop r = 1 c = 0 for b in column1: tk.Button(self,text=b[0],width=5,height=2, bg="grey",command=lambda text=b[1]:self.name(text)).grid(row=r,column=c) r += 1 if r > 7: r = 1 c += 1

...

def name(self, text): self.topLabel.config(text=text) def info(self, text): self.infoLine.config(text=text)

Quiero usar estas tuplas y enviar la 2 ° posición (el nombre del elemento) a la función de nombre () (que actualmente tengo y funciona), y la 3 ° posición (toda la información del elemento) a la función de información (), y imprímalos a ambos, pero estarán en diferentes lugares. No importa lo que intento, parece que no puedo hacerlo. ¿Puedes enviar varias cosas usando tuplas a diferentes funciones?