Hola amigos.
Desde un script bash ejecuto un scrip python que consiste en abrir una ventana. La cuestión es que cuando se ejecuta este último, el programa parece que se queda dormido esperando que la ventana se cierre.
La aplicación consiste en detectar si existe la tarjeta correcta en un detector de tarjeta. En tal caso, cerrar la ventana python y poder usar el equipo. En caso contrario, mantener la ventana y el equipo inutilizabe -o cuanto menos, no usable firefox-.
Repito que el problema surge al mostrar la ventana. Mientras está visible, firefox -o el equipo- se ejecutan, cuando debería impedir precisamente eso.
Muestro el código del fichero Python:
# !/usr/bin/env python
# ejemplo helloworld.py
import pygtk
pygtk.require('2.0')
import gtk
import os
class HelloWorld:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.destroy)
self.window.set_border_width(10)
self.button = gtk.Button("Introduzca tarjeta")
self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
self.window.add(self.button)
self.button.show()
self.window.show()
self.window.resize(250, 150)
def destroy(self, widget, data=None):
os.system("uname -a") # Muestro esta línea para comprobar la ejecución.
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
hello = HelloWorld()
hello.main()
Gracias por adelantado.
Un saludo.

eh? no entiendo muy bien tu
eh?
no entiendo muy bien tu problema..... el problema es que quieres ejecutar el programa python en segundo plano desde el script bash??????? para eso puedes usar el caracter & (ampersand)
mi_programa.py &
Ahora que si tu problema es bloquear toda la pantalla con tu ventana python, ponla siempre arriba (con la instrucción self.window.set_keep_above(True)) y en fullscreen (con self.window.fullscreen())
import pygtk pygtk.require('2.0') import gtk import os class HelloWorld: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_keep_above(True) ##### ALWAYS ON TOP ##### self.window.connect("destroy", self.destroy) self.window.set_border_width(10) self.button = gtk.Button("blabla") self.button.connect_object("clicked", gtk.Widget.destroy, self.window) self.window.add(self.button) self.button.show() self.window.show() #self.window.resize(250,150) self.window.fullscreen() ##### FULLSCREEN ##### def destroy(self, widget, data=None): os.system("uname -a") gtk.main_quit() def main(self): gtk.main() if __name__ == '__main__': hello = HelloWorld() hello.main()Saludos!
void hey(int x,int y)
{
if (x && y)
printf("http://libertadhack.blogspot.com/");
else
printf("http://libertadpunk.blogspot.com/");
}
Exacto. Para ejecutar en
Exacto. Para ejecutar en segundo plano hay que añadir &.
Por otro lado, gracias por las dos líneas de código añadidas que permiten lanzar la pantalla al inicio de sesión y evitar que el usuario pueda manejar el escritorio, no solamente firefox.
Solución definitiva
Aquí tenéis la solución definitiva.....
Al intentar lanzar una pantalla en el inicio de sesión -en mi caso usando un demonio, pero también por cualquier otro método-, como todavía no están cargadas las variables de entorno, entonces no detecta la pantalla. La solución es definir la variable de entorno DISPLAY.
De este modo, en el script -en este caso bash- que lanza el script python anterior, que a su vez lanza la ventana glade, debería exportarse la variable $DISPLAY con el valor conveniente.
FIN