Python Message Box Без огромной зависимости от библиотеки

Есть класс сообщений, в котором я могу просто показать простое окно сообщения без огромной библиотеки графического интерфейса или любой библиотеки после успеха программы или сбоя. (Мой скрипт делает только 1 вещь).

Кроме того, мне нужно только его запустить в Windows.

Вы можете использовать библиотеку ctypes , которая устанавливается с Python:

import ctypes MessageBox = ctypes.windll.user32.MessageBoxW MessageBox(None, 'Hello', 'Window title', 0) 

Выше код для Python 3.x. Для Python 2.x используйте MessageBoxA вместо MessageBoxW поскольку Python 2 по умолчанию использует строки, отличные от unicode.

Есть также пара прототипированных в библиотеках по умолчанию без использования ctypes.

Простой ящик сообщений:

 import win32ui win32ui.MessageBox("Message", "Title") 

Другие варианты

 if win32ui.MessageBox("Message", "Title", win32con.MB_YESNOCANCEL) == win32con.IDYES: win32ui.MessageBox("You pressed 'Yes'") 

В win32gui также есть примерно эквивалентный, а другой – в win32api. Документы для всех отображаются в C:\Python{nn}\Lib\site-packages\PyWin32.chm

Быстрый и грязный способ – вызвать ОС и использовать команду «zenity» (модуль подпроцесса должен быть включен по умолчанию в любом дистрибутиве python, zenity также присутствует во всех основных Linux). Попробуйте этот короткий сценарий примера, он работает в моем Ubuntu 14.04.

 import subprocess as SP # call an OS subprocess $ zenity --entry --text "some text" # (this will ask OS to open a window with the dialog) res=SP.Popen(['zenity','--entry','--text', 'please write some text'], stdout=SP.PIPE) # get the user input string back usertext=str(res.communicate()[0][:-1]) # adjust user input string text=usertext[2:-1] print("I got this text from the user: %s"%text) 

См. Раздел zenity –help для более сложных диалогов.

Вы также можете использовать класс сообщений из tkinter: from tkinter import messagebox если tkinter – это тот огромный графический интерфейс, которого вы хотите избежать. Использование прост, то есть: messagebox.FunctionName(title, message [, options]) с FuntionName в (showinfo, showwarning, showerror, askquestion, askokcancel, askyesno, askretrycancel).

Модуль PyMsgBox использует tkinter Python, поэтому он не зависит от других сторонних модулей. Вы можете установить его с помощью pip install pymsgbox .

Имена функций аналогичны функциям alert() , confirm() и prompt() JavaScript:

 >>> import pymsgbox >>> pymsgbox.alert('This is an alert!') >>> user_response = pymsgbox('What is your favorite color?')