带有使用ctypes和windl的图标的Python MessageBox

带有使用ctypes和windl的图标的Python MessageBox,python,dll,ctypes,messagebox,Python,Dll,Ctypes,Messagebox,因此,我正在寻找一种方法,仅使用本机库在Python中创建一个简单的Messagebox,并且遇到了几篇文章,即利用ctypes导入win32.dll并调用其MessageboxA函数 import ctypes # An included library with Python install. ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1) 很酷的东西,我想 ---但是--- 当我看的时候,这个Messa

因此,我正在寻找一种方法,仅使用本机库在Python中创建一个简单的Messagebox,并且遇到了几篇文章,即利用ctypes导入win32.dll并调用其MessageboxA函数

import ctypes  # An included library with Python install.
ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)
很酷的东西,我想

---但是---

当我看的时候,这个MessageboxA函数可以做更多的事情。我只是不知道如何正确地传递参数


我正试图找出一种标准方法来提升带有图标的messagebox,比如消息旁边的systemhand或警告图标。Microsoft的文档表明应该将其输入到uType参数中,这是最后一个参数,但除了更改messagebox的按钮之外,我在这里没有取得任何进展。

您只需将它们一起输入即可

import ctypes
MB_OK = 0x0
MB_OKCXL = 0x01
MB_YESNOCXL = 0x03
MB_YESNO = 0x04
MB_HELP = 0x4000
ICON_EXLAIM=0x30
ICON_INFO = 0x40
ICON_STOP = 0x10

result = ctypes.windll.user32.MessageBoxA(0, "Your text?", "Your title", MB_HELP| MB_YESNO | ICON_STOP)

我从您链接到的文档中获得了十六进制值

doh!我一直在想这个问题。哈哈,非常感谢JoranJoran,你能告诉我你是如何破译那些十六进制值的吗?您使用的十六进制值似乎是microsoft在其站点上显示的内容的缩写形式。我最初尝试按原样传递microsoft指示的十六进制值,但它们从未起作用。你的确实有效,我只是不知道你是如何从0x00000030L到0x30的,这是微软文档中对左边感叹号iconzeros表示的值,它不是数字的一部分,例如十进制97与00097相同。。。我可以很容易地写0x00000030。。。L只是指数据类型中的
long
(任何以
0x
开头的数字都只是一个十六进制数)这是什么原因,或者是什么将它们组合在一起?我不明白你的问题?这就是为什么在我见过的每一个例子中,你总是把整型标志组合在一起。。。我猜是什么告诉我的是,当有人说“组合这些整数”时,我知道它们的意思是
它们在一起