2010-07-29 6 views
8

¿Cuál es la forma más fácil de generar una ventana de error para una secuencia de comandos de Python en Windows? Las respuestas específicas de Windows están bien; por favor no responda cómo generar una ventana Tk personalizada.Cómo lanzar una ventana de error en Python en Windows

+0

lo que está mal con Tk? Es muy fácil crear un cuadro de mensaje con tkinter. –

+0

Estaba buscando un trazador de líneas –

Respuesta

6

@Constantin es casi correcto, pero su ejemplo generará texto basura. Asegúrese de que el texto sea unicode. Es decir,

ctypes.windll.user32.MessageBoxW(0, u"Error", u"Error", 0) 

... y funcionará bien.

+0

Lo tendré en cuenta. –

+0

Casi correcto :) En 3.x 'ctypes.windll.user32.MessageBoxW (0," Error "," Error ", 0)' hubiera funcionado como se esperaba, y 'u" Error "' no compilaría en absoluto. – Constantin

+0

Ah, es bueno saberlo. ¡Será un gran dolor de cabeza cuando me obliguen a cambiarme a py3k! – Chris

1

Si necesita un mensaje de error GUI, se puede usar EasyGui:

>>> import easygui as e 
>>> e.msgbox("An error has occured! :(", "Error") 

De lo contrario un simple print("Error!") debería ser suficiente.

+0

Eso funciona, ¡gracias! Aunque no es tan genial que tenga que instalar otra biblioteca. Y está basado en Tkinter. Quería algo que llamara a la API de Windows directamente. –

1

Si no recuerdo mal (no tienen caja de Windows por el momento), la forma ctypes es:

import ctypes 
ctypes.windll.user32.MessageBoxW(None, u"Error", u"Error", 0) 

ctypes es un módulo estándar.

Nota: Para Python 3.x no necesita el prefijo u.

2

Puede obtener una línea usando tkinter.

import tkMessageBox 

tkMessageBox.showerror('error title', 'error message') 

Aquí es un poco de documentación para pop-up dialogs.

+0

¡Ah, no lo sabía, gracias! Prefiero la llamada directa de win32, aunque –

+0

Tenga en cuenta que con esta respuesta también obtendrá una ventana principal. Ver [esta respuesta] (http://stackoverflow.com/questions/17280637/tkinter-messagebox-without-window) para más detalles. – Brown

1

Mira la sección de GUI de la Wiki de Python para obtener información sobre los rectángulos de mensajes

Cuestiones relacionadas