在Python for Mac中创建一个MessageBox?

时间:2018-05-23 21:07:35

标签: python macos ctypes messagebox

目前正在使用Cybrary的免费在线课程(我在3.6编码),但我在演示者使用Windows时使用Mac。到目前为止,差异很小,如果有的话。

当前部分涉及学习和使用Ctypes,而“赋值”则表示Write a function which takes two arguments, title and body and creates a MessageBox with those arguments

视频中使用的代码作为创建消息框的示例:

from ctypes import *

windll.user32.MessageBoxA(0, "Click Yes or No\n", "This is a title\n", 4)

我的代码:

# 2.1 Ctypes: Write a function which takes two arguments, title and body
#  and creates a MessageBox with those arguments
def python_message_box(title, body):
    return windll.user32.MessageBoxA(0, body, title, 0)

运行此命令会出现错误:

File ".../AdvancedActivities.py", line 9, in python_message_box
   return windll.user32.MessageBoxA(0, body, title, 0)
NameError: name 'windll' is not defined

我不相信我需要说我在尝试运行时遇到同样的错误

windll.user32.MessageBoxW(0, body, title, 0)

我无法在Mac计算机上创建消息框的任何地方找到任何示例。它是Windows特定的功能吗?如果是这样,那么Mac的等价物是什么?

编辑:Mark Setchell的解决方案是让Python运行终端函数来完成windll任务,因此使用:{/ p>而不是windll.user32.MessageBoxA(0, body, title, 0)

command = "osascript -e 'Tell application \"System Events\" to
           display dialog \""+body+"\"'"
system(command)

2 个答案:

答案 0 :(得分:4)

如果您在任何Mac上将其键入终端,您将看到一个对话框:

osascript -e 'Tell application "System Events" to display dialog "Some Funky Message" with title "Hello Matey"'

enter image description here

有关更多示例,请参阅here

因此,只需使用Python子进程调用来运行... subprocess documentation,或使用system()

无需安装。没有依赖。您还可以询问用户的值,选择文件或目录,并使用相同的技术选择颜色。对话框都是原生Mac的 - 不是一些丑陋的模仿。

答案 1 :(得分:0)

import os

body_Str="Body of Dialog"

title_Str="Title"

os.system("""osascript -e \'Tell application \"System Events\" to display dialog \""+body_Str+"\" with title \""+title_Str+"\"\'""")

这好多了