我正在Cybrary上免费学习Python课程(我在3.6版本编码),但是讲师使用Windows系统,而我使用的是Mac系统。目前为止,两者几乎没有任何区别。
当前部分涉及学习和使用Ctypes,"任务"要求编写一个函数,该函数接受两个参数title和body,并创建一个带有这些参数的MessageBox
。
视频中用作创建Message Box示例的代码:
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
任务,因此可以使用以下代码替代windll.user32.MessageBoxA(0, body, title, 0)
:
command = "osascript -e 'Tell application \"System Events\" to
display dialog \""+body+"\"'"
system(command)
windll.user32.MessageBoxA()
明显是特定于 Windows 的。使用tkinter
模块几乎可以在任何系统上实现相当的功能。 - martineau.... display dialog "blah blah" with title "Put your title here"
- Mark Setchell