Hola a todos. Trataré de describir lo más claramente posible el problema que tengo. Estoy adaptando un programa de consulta de stock que desarrollé en Windows con Python 2.7 y PyQt4 para que funcione con Ubuntu. El mismo posée una ventana principal con cuatro botones (consultar, ingresar nuevos artículos, modificar artículos y salir). En Windows quedó perfecto: uso el botón Consultar, por ejemplo, y se abre una nueva ventana con sus correspondientes funciones, SIN que se cierre la del menú principal. Si cierro la de consulta, puedo seguir usando la primera, hasta que la cierre. El problema es que en Ubuntu no puedo usar os.startfile, y al usar subprocess.call se abre la segunda ventana, puedo utilizarla perfectamente PERO la primera se bloquea (y hasta toma un tono más oscuro). Qué estoy haciendo mal?
probablemente se queda esperando a que la ventana termine... te recomiendo que la abras asincronamente es decir, no uses subprocess.call sino subprocess.Popen
Citarsubprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Run the command described by args. Wait for command to complete, then return the returncode attribute.
Citarclass subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
Execute a child program in a new process. On Unix, the class uses os.execvp()-like behavior to execute the child program. On Windows, the class uses the Windows CreateProcess() function. The arguments to Popen are as follows.
el uso basico es identico
subprocess.call(["ls", "-l"])
variableControlDelProceso = subprocess.Popen(["ls", "-l"])
si no vas a usar pipes ni nada de eso, puedes no declarar la variable
si usas la variables tienes las opciones de Popen (https://docs.python.org/2/library/subprocess.html#popen-objects) que te permiten ver si el programa finalizó o pasarle comandos