41 votes

Boîtes d'alerte en Python ?

Est-il possible de produire une alerte similaire à la fonction JavaScript alert("message") en python, avec une application fonctionnant en tant que démon.

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

Mise à jour :
Je pense que la manière la plus simple d'alerter l'utilisateur serait de produire une fenêtre contextuelle, car la situation doit être traitée immédiatement, et les autres options telles que l'enregistrement ou l'envoi d'un courrier électronique ne sont pas assez efficaces.

73voto

Que dire de ceci :

import win32api

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

En outre :

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

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

19voto

Matt Binford Points 418

Pour ceux d'entre nous qui recherchent une option purement Python, sans interface avec Windows et indépendante de la plate-forme, j'ai opté pour l'option mentionnée sur le site web suivant :

https://pythonspot.com/tk-message-box/ (lien archivé : https://archive.ph/JNuvx )

# 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()
  • miroir de douche ()
  • askquestion()
  • askokcancel()
  • askyesno ()
  • askretrycancel ()

code édité selon mon commentaire ci-dessous

6voto

math Points 240

Vous pouvez utiliser PyAutoGui pour créer des boîtes d'alerte Installez d'abord pyautogui avec pip :

pip install pyautogui

Tapez ensuite ceci en python :

import pyautogui as pag
pag.alert(text="Hello World", title="The Hello World Box")

Voici d'autres boîtes à messages, volées à Javascript :

  • confirm()
    Avec les boutons Ok et Annuler
  • prompt()
    Avec saisie de texte
  • password() Avec la saisie de texte, mais les caractères tapés seront affichés sous forme de *

3voto

NoBugs Points 2258

GTK peut être une meilleure option, car il est multiplateforme. Il fonctionnera très bien sur Ubuntu, et devrait fonctionner parfaitement sur Windows lorsque les bindings GTK et Python sont installés.

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 aquí . ( pdf )

Les arguments passés doivent être le parent gtk.window (ou None), DestroyWithParent, Message type, Message-buttons, title.

2voto

Tabares Points 565

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

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X