Foros del Web » Programando para Internet » Python »

Como puedo parar la ejecución de una función

Estas en el tema de Como puedo parar la ejecución de una función en el foro de Python en Foros del Web. Me explico un poco, estoy haciendo un capturador de paquetes con python, para ello estoy utilizando la libreria de scapy y como lo estoy haciendo ...
  #1 (permalink)  
Antiguo 08/03/2018, 01:49
 
Fecha de Ingreso: mayo-2012
Mensajes: 19
Antigüedad: 6 años, 4 meses
Puntos: 1
Como puedo parar la ejecución de una función

Me explico un poco, estoy haciendo un capturador de paquetes con python, para ello estoy utilizando la libreria de scapy y como lo estoy haciendo con entorno gráfico, pues también estoy utilizando la libreria de tkinter.

Tengo hechos 2 botones, uno que empieza a capturar paquetes, y otro para que detenga la captura de paquetes, el primero funciona bien, si en el sniff le meto o un tiempo de captura, o un numero determinado de paquetes a capturar, pero si no le pongo parametros, se pega capturando hasta que lo cierro.

Mi pregunta es:

Que le puedo poner a la función detener, para que se pare la captura de paquetes?

PD: No sé si también habría que ponerle algo a la función de capturar, hasta el momento he intentado con excepciones, pero no consigo que funcione.

PD2: Si alguno cree que con otra librería gráfica me iría mejor, que lo comente también, estoy dispuesto a sugerencias.

Os dejo por aquí el código para ver si me podéis orientar un poco.

Código:
#!/usr/bin/python
#-*-coding: utf-8-*-

import sys
from Tkinter import *
from scapy.all import *
import os
import netifaces

# Funciones
# ----------------------------------------------------------------------------------------------------------------------
def captura():
    try:
        a=sniff()
    except SystemExit:
        print("Programa finalizado")

    a.show()

    wrpcap("prueba_boton.pcap", a)

def detener():
    sys.exit()

def ver_interfaz_seleccionada(interfaces):
    print()

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

# Crear ventana principal
ventana = Tk()
ventana.geometry("1920x1080+0+0")
ventana.title("APP")

# Agregando una imagen a un boton
imgCapturar = PhotoImage(file="images.png")
boton_captura = Button(ventana, image=imgCapturar, command=captura, height=50, width=50).place(x=0, y=0)

# Agregando una imagen a un boton
imgStop = PhotoImage(file="2.gif")
boton_stop = Button(ventana, image=imgStop, command=detener, height=50, width=50).place(x=50, y=0)

ventana.mainloop()
Un saludo.

Última edición por morisco_17; 08/03/2018 a las 02:14
  #2 (permalink)  
Antiguo 12/03/2018, 13:53
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 8 años, 9 meses
Puntos: 9
Respuesta: Como puedo parar la ejecución de una función

Hola,

No conozco algunos modulos que mencionas en tu script. Pero si estoy usando tkinter. Y para el problema que mencionas, creo, te van a recomendar el uso de hilos o threads. El bucle while tampoco se lleva demasiado bien con tkinter.

Te paso unos enlaces de un blog por si quieres profundizar en el tema:

http://python-para-impacientes.blogs...n-hilos-i.html

http://python-para-impacientes.blogs...ilos-y-ii.html

Saludos!

Etiquetas: parar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.