Biseccion

Páginas: 8 (1962 palabras) Publicado: 30 de mayo de 2012
self.button1 = Button(self.myContainer1,
command = self.buttonHandler(button_name, 1, "Good stuff!")
... pero averiguamos que esto no trabajó el modo que pensamos esto.
El modo de hacer lo que queremos es de volver a escribir esta declaración este camino:
self.button1 = Button(self.myContainer1,
command = lambda
arg1=button_name, arg2=1, arg3="Good stuff!" :
self.buttonHandler(arg1, arg2,arg3)
)
Encuadernación de Acontecimiento
Felizmente, la lambda también nos da un modo de dar parámetros la encuadernación de acontecimiento. En vez de :
self.button1.bind("",
self.buttonHandler_a(event, button_name, 1, "Good stuff!"))

[ Note que "el acontecimiento" aquí está un nombre variable - esto no es una palabra clave de Pitón o algo así. Esto el ejemplo usa el nombre "elacontecimiento" para el argumento de acontecimiento, pero algunas discusiones de esta técnica usan el llame "e" para el argumento de acontecimiento, y nosotros fácilmente podríamos tal como haberle llamado "event_arg" si nosotros tuviéramosquerido a.]
Uno de los rasgos agradables de usar la lambda es que podemos (si deseamos), simplemente no pasan el acontecimiento argumento. Si no pasamos el argumento deacontecimiento, entonces podemos llamar la función de self.buttonHandler directamente, en vez de indirectamente por el mí buttonHandler_a función.
Para ilustrar esta técnica, cifraremos el acontecimiento que ata para button2 de manera diferente que hicimos para Button1. Esto es lo que hacemos con button2:

# event binding -- without passing the event as an argument
self.button2.bind("",lambda
event, arg1=button_name, arg2=2, arg3="Bad stuff!" :
self.buttonHandler(arg1, arg2, arg3)
)
Comportamiento de Programa
Si usted controla este programa, esto se comportará tal como deseamos.
Note que usted puede cambiar el foco de teclado del ¡Vale! al botón CANCELAR, y atrás otra vez, por apretamiento de la llave de TAB sobre el teclado.

En particular, usted debería experimentar conla invocación el ¡Vale! el botón por presionando la llave sobre el teclado. Si usted invoca el ¡Vale! el botón vía un keypress la llave, usted irá a través la función de buttonHandler_a, y usted también conseguirán un mensaje de ello, imprimiendo la información sobre el acontecimiento que le ha sido pasado.
En cualquier caso, si usted pulsa sobre una de las baratijas de botón con el ratón, oinvoca una baratija vía keypress sobre el teclado, esto amablemente imprimirá los argumentos que fueron pasados a el buttonHandler función.
Código original de Programa
from Tkinter import *
class MyApp:
def __init__(self, parent):
self.myParent = parent
self.myContainer1 = Frame(parent)
self.myContainer1.pack()
#------------------ BUTTON #1 ------------------------------------
button_name= "OK"
# command binding
self.button1 = Button(self.myContainer1,
command = lambda
arg1=button_name, arg2=1, arg3="Good stuff!" :
self.buttonHandler(arg1, arg2, arg3)
)
# event binding -- passing the event as an argument
self.button1.bind("",
lambda
event, arg1=button_name, arg2=1, arg3="Good stuff!" :
self.buttonHandler_a(event, arg1, arg2, arg3)
)self.button1.configure(text=button_name, background="green")
self.button1.pack(side=LEFT)
self.button1.focus_force() # Put keyboard focus on button1
#------------------ BUTTON #2 ------------------------------------
button_name = "Cancel"
# command binding
self.button2 = Button(self.myContainer1,
command = lambda
arg1=button_name, arg2=2, arg3="Bad stuff!":
self.buttonHandler(arg1, arg2, arg3)
)
# event binding --without passing the event as an argument
self.button2.bind("",
lambda
event, arg1=button_name, arg2=2, arg3="Bad stuff!" :
self.buttonHandler(arg1, arg2, arg3)
)
self.button2.configure(text=button_name, background="red")
self.button2.pack(side=LEFT)
def buttonHandler(self, argument1, argument2, argument3):
print " buttonHandler routine received arguments:" \
, argument1.ljust(8), argument2,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Biseccion
  • biseccion
  • Biseccion
  • Biseccion
  • biseccion
  • biseccion
  • Biseccion
  • Biseccion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS