2008-10-07 51 views
21

Es posible generar una alerta similar a la alerta de JavaScript ("mensaje") en python, con una aplicación que se ejecuta como daemon.Cuadros de alerta en Python?

Esto se ejecutará en Windows, muy probablemente XP, pero 2000 y Vista también son posibilidades muy reales.

Actualización:
Con ello se pretende ejecutar en segundo plano y alertar al usuario cuando se cumplen ciertas condiciones, supongo que la forma más fácil para alertar al usuario sería producir un pop-up, ya que tiene que ser manejado de inmediato, y otras opciones tales como solo iniciar sesión o enviar un correo electrónico no son lo suficientemente eficientes.

+1

Supongo que una mejor manera de expresar esto es como un "proceso en segundo plano", no como un daemon. – UnkwnTech

Respuesta

38

qué pasa con esto:

import win32api 

win32api.MessageBox(0, 'hello', 'title') 

Además:

win32api.MessageBox(0, 'hello', 'title', 0x00001000) 

hará que el cuadro aparece en la parte superior de otras ventanas, para los mensajes urgentes. Vea MessageBox function para otras opciones.

+0

Esto es EXACTAMENTE lo que necesito Gracias. – UnkwnTech

+2

Para obtener más información sobre esta función, he encontrado esto: http://docs.activestate.com/activepython/2.4/pywin32/win32api__MessageBox_meth.html – UnkwnTech

+11

Obtengo 'ImportError: Ningún módulo llamado win32api'. – user

-2

Inicie una aplicación como proceso en segundo plano que tiene un puerto TCP vinculado a localhost o se comunica a través de un archivo; su daemon tiene el archivo abierto y luego echo "foo" > c:\your\file. Después de, digamos, 1 segundo sin actividad, visualiza el mensaje y trunca el archivo.

+2

Parece mucho trabajo y no resuelve el problema. – UnkwnTech

+0

No especificó las condiciones en las que se mostraría el cuadro de diálogo. Supuse dependencias entre aplicaciones. –

+0

Dije que necesitaba producir un cuadro de alerta, esto no muestra una alerta. – UnkwnTech

1

Puede usar la biblioteca win32 en Python; este es un ejemplo clásico de aceptar o cancelar.

import win32api 
import win32com.client 
import pythoncom 

result = win32api.MessageBox(None,"Do you want to open a file?", "title",1) 

if result == 1: 
print 'Ok' 
elif result == 2: 
print 'cancel' 

La colección:

win32api.MessageBox(0,"msgbox", "title") 
win32api.MessageBox(0,"ok cancel?", "title",1) 
win32api.MessageBox(0,"abort retry ignore?", "title",2) 
win32api.MessageBox(0,"yes no cancel?", "title",3) 
+4

está importando pythoncom y win32com.client por nada – totaam

3

GTK puede ser una mejor opción, ya que es multiplataforma. Funcionará muy bien en Ubuntu, y debería funcionar bien en Windows cuando se instalan enlaces GTK y Python.

from gi.repository import Gtk 

dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO, 
      Gtk.ButtonsType.OK, "This is an INFO MessageDialog") 
dialog.format_secondary_text(
    "And this is the secondary text that explains things.") 
dialog.run() 
print "INFO dialog closed" 

Puedes ver otros ejemplos here. (pdf)

Los argumentos que se pasan deben ser parent (o None) gtk.window, DestroyWithParent, tipo de mensaje, botones de mensaje, título.

+0

De alguna manera, esto me da un error "sin módulo llamado repositorio". Parece que está desactualizado? – Kev1n91

+0

@ Kev1n91 ¿Estás en Ubuntu 16.04 o más nuevo? Pruébalo en python3. :) – NoBugs

Cuestiones relacionadas