2008-10-07 3 views
21

Ist es möglich, eine Warnung ähnlich der JavaScript-Warnung ("Nachricht") in Python zu erzeugen, wobei eine Anwendung als Daemon läuft.Alarmfelder in Python?

Dies wird in Windows ausgeführt werden, Wahrscheinlich XP aber 2000 und Vista sind auch sehr reale Möglichkeiten.

Update:
Dies soll im Hintergrund und alarmiert den Benutzer, wenn bestimmte Bedingungen erfüllt sind laufen, ich meine, dass der einfachste Weg, um den Benutzer zu warnen, ein Pop-up zu produzieren wäre, wie es sein muss sofort bearbeitet werden, und andere Optionen wie nur Protokollierung oder Senden einer E-Mail sind nicht effizient genug.

+1

Ich denke, eine bessere Möglichkeit, dies zu formulieren, ist als "Hintergrundprozess" kein Dämon. – UnkwnTech

Antwort

38

was dazu:

import win32api 

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

Zusätzlich:

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

wird die Box auf den anderen Fenstern, für dringende Nachrichten erscheinen. Andere Optionen finden Sie unter MessageBox function.

+0

Das ist genau das, was ich brauche, danke. – UnkwnTech

+2

Für weitere Informationen zu dieser Funktion habe ich Folgendes gefunden: http://docs.activestate.com/activepython/2.4/pywin32/win32api__MessageBox_meth.html – UnkwnTech

+11

Ich bekomme 'ImportError: Kein Modul namens win32api'. – user

-2

Starten Sie eine App als Hintergrundprozess, der entweder über einen TCP-Port verfügt, der an localhost gebunden ist, oder über eine Datei kommuniziert - Ihr Daemon hat die Datei geöffnet und Sie haben dann echo "foo" > c:\your\file. Nach etwa einer Sekunde ohne Aktivität zeigen Sie die Nachricht an und schneiden die Datei ab.

+2

Das scheint eine Menge Arbeit zu sein, und es löst das Problem nicht. – UnkwnTech

+0

Sie haben die Bedingungen nicht angegeben, unter denen das Dialogfeld angezeigt werden würde. Ich habe Abhängigkeiten zwischen Anwendungen angenommen. –

+0

Ich sagte, ich musste eine Alarmbox erstellen, dies zeigt keine Warnung an. – UnkwnTech

1

Sie können Win32-Bibliothek in Python verwenden, dies ist ein klassisches Beispiel für OK oder Abbrechen.

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' 

Die Sammlung:

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

Sie importieren Pythoncom und win32com.client für nichts – totaam

3

GTK kann eine bessere Option sein, da es plattformübergreifend ist. Es funktioniert gut unter Ubuntu und sollte unter Windows gut funktionieren, wenn GTK- und Python-Bindungen installiert sind.

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" 

Sie können andere Beispiele here sehen. (pdf)

Die übergebenen Argumente sollten die gtk.window Eltern (oder None), DestroyWithParent, Nachrichtentyp, Message-Buttons, Titel sein.

+0

Irgendwie gibt dies mir einen Fehler "kein Modul namens Repository". Scheint wie es ist veraltet? – Kev1n91

+0

@ Kev1n91 Sie auf Ubuntu 16.04 oder neuer? Probieren Sie es in Python3. :) – NoBugs