web-dev-qa-db-fra.com

Boîtes d'alerte en Python?

Est-il possible de produire une alerte similaire à l'alerte JavaScript ("message") en python, avec une application s'exécutant en tant que démon.

Cela sera exécuté sous Windows, très probablement XP mais 2000 et Vista sont également des possibilités très réelles.

Mettre à jour:
. et d'autres options telles que la simple journalisation ou l'envoi d'un e-mail ne sont pas assez efficaces.

27
UnkwnTech

et ça:

import win32api

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

Aditionellement:

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

fera apparaître la boîte au-dessus des autres fenêtres, pour les messages urgents. Voir fonction MessageBox pour d'autres options.

53
weir

GTK peut être une meilleure option, car il est multi-plateforme. Cela fonctionnera très bien sur Ubuntu et devrait fonctionner très bien sur Windows lorsque GTK et les liaisons Python sont installées).

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"

Vous pouvez voir d'autres exemples ici . ( pdf )

Les arguments transmis doivent être le parent gtk.window (ou None), DestroyWithParent, le type de message, les boutons de message et le titre.

3
NoBugs

Vous pouvez utiliser la bibliothèque win32 en Python, c'est un exemple classique de OK ou Annuler.

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 collection:

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)
1
Tabares

Pour ceux d'entre nous qui recherchent une option purement Python qui ne s'interface pas avec Windows et est indépendante de la plate-forme, j'ai opté pour l'option répertoriée sur le site Web suivant:

https://pythonspot.com/tk-message-box/

# Python 3.x code
# Imports
import tkinter
from tkinter import messagebox

# This code is to hide the main tkinter window
root = tkinter.Tk()
root.withdraw

# Message Box
messagebox.showinfo("Title", "Message")

Vous pouvez choisir d'afficher différents types d'options de boîte de message pour différents scénarios:

  • showinfo ()
  • showwarning ()
  • showerror ()
  • poser une question()
  • askokcancel ()
  • askyesno ()
  • askretrycancel ()
1
Matt Binford