web-dev-qa-db-ja.com

Pythonの警告ボックス?

デーモンとして実行されているアプリケーションを使用して、PythonでJavaScriptのalert( "message")に類似したアラートを生成することは可能ですか?.

これはWindowsで実行されます。おそらくXPですが、2000とVistaも非常に現実的な可能性があります。

更新:
これは、バックグラウンドで実行され、特定の条件が満たされたときにユーザーに警告することを目的としています。ユーザーに警告する最も簡単な方法は、ポップアップを生成することです。また、単にログを記録したり、電子メールを送信するなどのその他のオプションは、十分に効率的ではありません。

27
UnkwnTech

これはどうですか:

import win32api

win32api.MessageBox(0, 'hello', 'title')

さらに:

win32api.MessageBox(0, 'hello', 'title', 0x00001000) 

緊急メッセージの場合、ボックスを他のウィンドウの上に表示します。他のオプションについては MessageBox function を参照してください。

53
weir

GTKはクロスプラットフォームであるため、より良いオプションである可能性があります。 Ubuntuでうまく動作し、GTKとPythonバインディングがインストールされている場合はWindowsでも問題なく動作するはずです。

from gi.repository import Gtk

dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO,
            Gtk.ButtonsType.OK, "This is an INFO MessageDialog")
dialog.format_secondary_text(
    "And this is the secondary text that explains things.")
dialog.run()
print "INFO dialog closed"

他の例 here を見ることができます。 ( pdf

渡される引数は、gtk.windowの親(またはNone)、DestroyWithParent、メッセージタイプ、メッセージボタン、タイトルでなければなりません。

3
NoBugs

Pythonでwin32ライブラリを使用できます。これは、OKまたはキャンセルの古典的な例です。

import win32api
import win32com.client
import pythoncom

result = win32api.MessageBox(None,"Do you want to open a file?", "title",1)

if result == 1:
 print 'Ok'
Elif result == 2:
 print 'cancel'

コレクション:

win32api.MessageBox(0,"msgbox", "title")
win32api.MessageBox(0,"ok cancel?", "title",1)
win32api.MessageBox(0,"abort retry ignore?", "title",2)
win32api.MessageBox(0,"yes no cancel?", "title",3)
1
Tabares

Windowsとのインターフェースがなく、プラットフォームに依存しない純粋なPythonオプションを探している人のために、私は次のWebサイトにリストされているオプションを探しました:

https://pythonspot.com/tk-message-box/

# Python 3.x code
# Imports
import tkinter
from tkinter import messagebox

# This code is to hide the main tkinter window
root = tkinter.Tk()
root.withdraw

# Message Box
messagebox.showinfo("Title", "Message")

さまざまなシナリオでさまざまなタイプのメッセージボックスオプションを表示するように選択できます。

  • showinfo()
  • showwarning()
  • showerror()
  • 質問をします()
  • askokcancel()
  • askyesno()
  • askretrycancel()
1
Matt Binford