2010-12-19 39 views
24

是否有一個消息框類,我可以只顯示一個簡單的消息框,沒有一個巨大的GUI庫或程序成功或失敗時的任何庫。 (我的腳本只做1件事)。Python消息框沒有巨大的庫依賴性

此外,我只需要它在Windows上運行。

+0

這裏有兩個獨立的問題。你應該把它們分成不同的問題。 – katrielalex 2010-12-19 23:07:19

+0

是的。另一個問題是在http://stackoverflow.com/questions/4485710/inno-setup-registry – Pwnna 2010-12-19 23:20:44

回答

48

可以使用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字符串。

+0

Yay的ctypes。這就是我要建議的,但你打敗了我:-) – 2010-12-19 23:25:40

+7

你也可以在Python2中使用'MessageBoxW':'MessageBoxW(0,u'Hello',u'Window title',0)'。 – 2010-12-19 23:31:25

+0

完美的工作!謝謝。 – Pwnna 2010-12-19 23:33:48

9

也有一對夫婦在沒有使用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

'win32ui'不是默認庫。它是'PythonWin'的一部分,它是通過'pywin32'分發的。安裝在'site-packages'中的包都是非默認的。 – 2015-12-07 09:02:14

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對於更復雜的對話框

0

您也可以使用MessageBox類從Tkinter的: from tkinter import messagebox 除非Tkinter的是,巨大的GUI你希望避免的。 用法很簡單,即: messagebox.FunctionName(title, message [, options]) with FuntionName in(showinfo,showwarning,showerror,askquestion,askokcancel,askyesno,askretrycancel)。

0

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