Python消息框没有巨大的库依赖

时间:2010-12-19 22:58:37

标签: python windows windows-7

是否有一个messagebox类,我可以在程序成功或失败时显示一个没有庞大的GUI库或任何库的简单消息框。 (我的脚本只做一件事)。

另外,我只需要它在Windows上运行。

6 个答案:

答案 0 :(得分:56)

您可以使用随Python一起安装的ctypes库:

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

上面的代码适用于Python 3.x.对于Python 2.x,使用MessageBoxA而不是MessageBoxW,因为Python 2默认使用非unicode字符串。

答案 1 :(得分:11)

默认库中还有一对原型没有使用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

答案 2 :(得分:1)

快速而肮脏的方法是调用操作系统并使用“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

答案 3 :(得分:1)

您还可以使用tkinter中的messagebox类:     from tkinter import messagebox 除非tkinter是您想要避免的巨大GUI。 用法很简单,即:     messagebox.FunctionName(title, message [, options]) 使用FuntionName(showinfo,showwarning,showerror,askquestion,askokcancel,askyesno,askretrycancel)。

答案 4 :(得分:1)

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?')

答案 5 :(得分:0)

这与tkinter一起。

:href="sub.link"