Python Message Box Без огромной зависимости от библиотеки - PullRequest
33 голосов
/ 20 декабря 2010

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

Кроме того, мне нужно, чтобы он работал только в Windows.

Ответы [ 5 ]

57 голосов
/ 20 декабря 2010

Вы можете использовать библиотеку 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 по умолчанию использует не-юникодные строки.

11 голосов
/ 09 октября 2012

Существует также пара прототипов в библиотеках по умолчанию без использования 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

1 голос
/ 20 марта 2017

Модуль 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?')
1 голос
/ 01 декабря 2016

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

1 голос
/ 25 марта 2015

Быстрый и грязный способ - вызвать ОС и использовать команду "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 для более сложных диалогов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...