Python 如何指定使用ctypes MessageBoxW单击是/否时实际发生的情况?
我看到很多人展示了这段代码,但是从来没有人具体说明过如何让Yes/No真正起作用。它们是按钮,它们就在那里,但是如何指定当您单击或时实际发生的情况?引用: 返回值 类型:int 如果消息框中有“取消”按钮,则函数返回 按下ESC键或取消键时的IDCANCEL值 按钮被选中。如果消息框中没有取消按钮,请按 ESC没有效果如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError如果函数 成功,返回值为以下菜单项值之一 您可以在“正式文档”链接下选中列出的值 示例代码类似于:Python 如何指定使用ctypes MessageBoxW单击是/否时实际发生的情况?,python,python-2.7,python-3.x,ctypes,Python,Python 2.7,Python 3.x,Ctypes,我看到很多人展示了这段代码,但是从来没有人具体说明过如何让Yes/No真正起作用。它们是按钮,它们就在那里,但是如何指定当您单击或时实际发生的情况?引用: 返回值 类型:int 如果消息框中有“取消”按钮,则函数返回 按下ESC键或取消键时的IDCANCEL值 按钮被选中。如果消息框中没有取消按钮,请按 ESC没有效果如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError如果函数 成功,返回值为以下菜单项值之一 您可以在“正式文档”链接下选中列出的值 示例代码类似于: de
def addnewunit(title, text, style):
ctypes.windll.user32.MessageBoxW(0, text, title, style)
使用正确的ctypes包装,类似这样的内容:
def addnewunit(title, text, style):
ret_val = ctypes.windll.user32.MessageBoxW(0, text, title, style)
if ret_val == 0:
raise Exception('Oops')
elif ret_val == 1:
print "OK Clicked"
... # additional conditional checks of ret_val may go here
有关utype参数的各种值,请参阅MessageBox。其他答案显示返回值指示按下的按钮,但如果您不想查找所有常量值,请使用它,它已经为您包装了许多Windows API(中文演示,显示它正在调用Unicode API):
将答案设置为与命令相等,如下所示:
#coding:utf8
import win32api
import win32con
result = win32api.MessageBox(None,'你是美国人吗?','问题',win32con.MB_YESNO)
if result == win32con.IDYES:
print('是')
else:
print('不是')
那你就可以用
打印(答案)
查看用户选择的结果是多少
然后根据答案编号使用一个“如果”语句,让它做你想做的事。一个小错误:IDOK=1Thanks@Pamela。固定的。
#coding:utf8
import win32api
import win32con
result = win32api.MessageBox(None,'你是美国人吗?','问题',win32con.MB_YESNO)
if result == win32con.IDYES:
print('是')
else:
print('不是')
import ctypes
answer = ctypes.windll.user32.MessageBoxW(0, "Message", "Title", 4)