是否有一個消息框類,我可以只顯示一個簡單的消息框,沒有一個巨大的GUI庫或程序成功或失敗時的任何庫。 (我的腳本只做1件事)。Python消息框沒有巨大的庫依賴性
此外,我只需要它在Windows上運行。
是否有一個消息框類,我可以只顯示一個簡單的消息框,沒有一個巨大的GUI庫或程序成功或失敗時的任何庫。 (我的腳本只做1件事)。Python消息框沒有巨大的庫依賴性
此外,我只需要它在Windows上運行。
可以使用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字符串。
Yay的ctypes。這就是我要建議的,但你打敗了我:-) – 2010-12-19 23:25:40
你也可以在Python2中使用'MessageBoxW':'MessageBoxW(0,u'Hello',u'Window title',0)'。 – 2010-12-19 23:31:25
完美的工作!謝謝。 – Pwnna 2010-12-19 23:33:48
也有一對夫婦在沒有使用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
'win32ui'不是默認庫。它是'PythonWin'的一部分,它是通過'pywin32'分發的。安裝在'site-packages'中的包都是非默認的。 – 2015-12-07 09:02:14
一個快速和骯髒的方法是調用操作系統,並使用「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對於更復雜的對話框
您也可以使用MessageBox類從Tkinter的: from tkinter import messagebox
除非Tkinter的是,巨大的GUI你希望避免的。 用法很簡單,即: messagebox.FunctionName(title, message [, options])
with FuntionName in(showinfo,showwarning,showerror,askquestion,askokcancel,askyesno,askretrycancel)。
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?')
這裏有兩個獨立的問題。你應該把它們分成不同的問題。 – katrielalex 2010-12-19 23:07:19
是的。另一個問題是在http://stackoverflow.com/questions/4485710/inno-setup-registry – Pwnna 2010-12-19 23:20:44