39

是否可以在 python 中产生类似于 JavaScript 的 alert("message") 的警报,应用程序作为守护进程运行。

这将在 Windows 中运行,很可能是 XP,但 2000 和 Vista 也是非常现实的可能性。

更新:
这旨在在后台运行并在满足某些条件时提醒用户,我认为提醒用户的最简单方法是产生一个弹出窗口,因为它需要立即处理,以及其他选项例如仅记录或发送电子邮件是不够有效的。

4

6 回答 6

69

那这个呢:

import win32api

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

此外:

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

将使该框出现在其他窗口的顶部,用于紧急消息。有关其他选项,请参阅MessageBox 函数

于 2008-10-07T05:29:15.430 回答
17

对于我们这些寻找不与 Windows 交互且独立于平台的纯 Python 选项的人来说,我选择了以下网站上列出的选项:

https://pythonspot.com/tk-message-box/ (存档链接:https ://archive.ph/JNuvx )

# 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")

您可以选择针对不同场景显示各种类型的消息框选项:

  • 显示信息()
  • 显示警告()
  • 显示错误()
  • 问问题()
  • 询问取消()
  • 阿斯基耶斯诺 ()
  • 问重试取消()

根据我下面的评论编辑代码

于 2019-09-10T12:59:08.680 回答
3

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"

您可以在此处查看其他示例。(PDF

传递的参数应该是 gtk.window 父级(或无)、DestroyWithParent、消息类型、消息按钮、标题。

于 2013-12-09T01:14:00.823 回答
3

您可以使用PyAutoGui制作警报框 首先使用 pip 安装 pyautogui:

pip install pyautogui

然后在python中输入:

import pyautogui as pag
pag.alert(text="Hello World", title="The Hello World Box")

这里有更多的消息框,从 Javascript 中偷来的:

  • confirm()
    带有确定和取消按钮
  • prompt()
    带文本输入
  • password() 使用文本输入,但键入的字符将显示为*
于 2020-11-16T13:25:28.113 回答
2

您可以在 Python 中使用 win32 库,这是 OK 或 Cancel 的经典示例。

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)
于 2012-08-06T15:23:17.377 回答
-4

将应用程序作为后台进程启动,该进程要么具有绑定到 localhost 的 TCP 端口,要么通过文件进行通信——你的守护进程打开文件,然后你echo "foo" > c:\your\file. 例如,在 1 秒没有活动之后,您会显示消息并截断文件。

于 2008-10-07T05:30:52.933 回答