Подтвердить что ты не робот

Окно сообщений Python без огромной зависимости от библиотеки

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

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

4b9b3361

Ответ 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?')