web-dev-qa-db-ja.com

Pythonライブラリに大きな依存関係のないメッセージボックス

プログラムの成功または失敗時に、巨大なGUIライブラリやライブラリのない単純なメッセージボックスを表示できるメッセージボックスクラスはありますか。 (私のスクリプトは1つのことしかしません)。

また、Windowsでのみ実行する必要があります。

33
Pwnna

Pythonと共にインストールされる ctypes ライブラリを使用できます。

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

上記のコードはPython 3.x用です。 Python 2.xの場合、Python 2はデフォルトで非Unicode文字列を使用するため、MessageBoxAの代わりにMessageBoxWを使用します。

57
interjay

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

11
Wade Hatler

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?')
_
2
Al Sweigart

また、tkinterのmessageboxクラスを使用することもできます:tkinterが避けたい巨大なGUIでない限り、_from tkinter import messagebox_。使い方は簡単です。つまり、messagebox.FunctionName(title, message [, options])にFuntionNameを(showinfo、showwarning、showerror、askquestion、askokcancel、askyesno、askretrycancel)で指定します。

1
Kurt K

簡単で汚い方法は、OSを呼び出して「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を参照してください

1
Mario Rossi

これはtkinterを使用しています。

from tkinter import * #required.
from tkinter import messagebox #for messagebox.

App = Tk() #required.
App.withdraw() #for hide window.

print("Message Box in Console")
messagebox.showinfo("Notification", "Hello World!") #msgbox

App.mainloop() #required.
0
ForceVII