Окно сообщений Python без огромной зависимости от библиотеки
Существует ли класс сообщений, в котором я могу просто отобразить простое окно сообщения без огромной библиотеки графического интерфейса или любой библиотеки после успеха или сбоя программы. (Мой script делает только 1 вещь).
Кроме того, мне нужно только его запустить в Windows.
Ответы
Ответ 1
Вы можете использовать библиотеку 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 по умолчанию использует не-юникодные строки.
Ответ 2
Есть также пара прототипов в библиотеках по умолчанию, не использующих 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
Ответ 3
Быстрый и грязный способ - вызвать ОС и использовать команду "zenity" (модуль подпроцесса должен быть включен по умолчанию в любом дистрибутиве python, zenity также присутствует во всех основных Linux). Попробуйте этот короткий пример script, он работает в моем 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 для более сложных диалогов
Ответ 4
Вы также можете использовать класс сообщений из tkinter: from tkinter import messagebox
если tkinter - это тот огромный графический интерфейс, которого вы хотите избежать.
Использование прост, т.е. messagebox.FunctionName(title, message [, options])
с FuntionName в (showinfo, showwarning, showerror, askquestion, askokcancel, askyesno, askretrycancel).
Ответ 5
Модуль PyMsgBox использует Python tkinter, поэтому он не зависит от других сторонних модулей. Вы можете установить его с помощью pip install pymsgbox
.
Имена функций похожи на функции JavaScript alert()
, confirm()
и prompt()
:
>>> import pymsgbox
>>> pymsgbox.alert('This is an alert!')
>>> user_response = pymsgbox('What is your favorite color?')