2008-10-07 14 views
21

Czy jest możliwe wygenerowanie alertu podobnego do alertu JavaScript ("wiadomość") w pythonie, z uruchomioną aplikacją jako demona.Pola alertów w języku Python?

To będzie działać w systemie Windows, najprawdopodobniej XP, ale 2000 i Vista są również bardzo realnymi możliwościami.

Aktualizacja:
ten jest przeznaczony do pracy w tle i ostrzega użytkownika, gdy zostaną spełnione określone warunki, ja zorientować, że najprostszym sposobem, aby ostrzec użytkownika będzie produkować pop-up, jak to musi być obsługiwane natychmiast, a inne opcje, takie jak zwykłe logowanie lub wysyłanie wiadomości e-mail, nie są wystarczająco wydajne.

+1

Przypuszczam, że lepszym sposobem na wyrażenie jest to "proces w tle", a nie demon. – UnkwnTech

Odpowiedz

38

co na ten temat:

import win32api 

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

Dodatkowo:

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

sprawi, że okno pojawia się na wierzchu innych okien, dla pilnych wiadomości. Aby uzyskać inne opcje, patrz MessageBox function.

+0

To jest DOKŁADNIE to, czego potrzebuję Dziękuję. – UnkwnTech

+2

Aby uzyskać więcej informacji na temat tej funkcji znalazłem to: http://docs.activestate.com/activepython/2.4/pywin32/win32api__MessageBox_meth.html – UnkwnTech

+11

Otrzymuję 'ImportError: Brak modułu o nazwie win32api'. – user

-2

Uruchom aplikację jako proces w tle, który ma port TCP powiązany z hostem lokalnym lub komunikuje się za pośrednictwem pliku - demon ma otwarty plik, a następnie echo "foo" > c:\your\file. Po, powiedzmy, 1 sekundzie braku aktywności, wyświetlasz komunikat i obcinasz plik.

+2

To wydaje się strasznie dużo pracy i nie rozwiązuje problemu. – UnkwnTech

+0

Nie określono warunków, w których będzie wyświetlane okno dialogowe. Zakładałem zależności między aplikacjami. –

+0

Powiedziałem, że muszę wygenerować okno alertu, to nie wyświetla alertu. – UnkwnTech

1

Możesz użyć biblioteki win32 w Pythonie, jest to klasyczny przykład OK lub Anuluj.

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' 

Kolekcja:

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

importujesz pythoncom i win32com.client za darmo – totaam

3

GTK może być lepszym rozwiązaniem, ponieważ jest cross-platform. Będzie działał świetnie na Ubuntu i powinien działać dobrze w systemie Windows, gdy są zainstalowane wiązania GTK i 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" 

Możesz zobaczyć inne przykłady here. (pdf)

Podane argumenty powinny być rodzicem gtk.window (lub Brak), DestroyWithParent, typem wiadomości, przyciskami wiadomości, tytułem.

+0

W jakiś sposób daje mi to błąd "brak modułu o nazwie repozytorium". Wydaje się, że jest przestarzały? – Kev1n91

+0

@ Kev1n91 Ty w Ubuntu 16.04 lub nowszym? Wypróbuj go w python3. :) – NoBugs