Python 3.4 ctypes消息框无法打开,包含其他代码

时间:2016-08-21 17:15:39

标签: python ctypes

通常,此代码在调用时工作正常。

import ctypes

def message_box(title, text):
    ctypes.windll.user32.MessageBoxW(0, text, title, 1)

但是当它与其他代码一起使用时,它会挂在调用message_box的行。

import ctypes

def message_box(title, text):
    ctypes.windll.user32.MessageBoxW(0, text, title, 1)

while True:
    time = input("Enter time of the reminder in the format 'HH:MM': ")
    if (len(time) != 5):
        print("\nInvalid answer\n")
        continue
    if (time[2] != ":"):
        print("\nInvalid answer\n")
        continue
    try:
        hours = int(time[0:2])
        minutes = int(time[3:5])
    except:
        print("\nInvalid answer\n")
        continue
    if not (0 < hours < 23 or 0 < minutes < 59):
        print("\nInvalid answer\n")
        continue
    break

message_box("Example_title", "Example_text")

1 个答案:

答案 0 :(得分:0)

我找到了怎么做。

在消息框的第四个参数中,您需要输入由管道('|')分隔的值。从我的有限测试中,MB参数定义了用户可以单击的按钮,除了将窗口置于前面的MB_SYSTEMMODAL之外。 ICON参数定义了窗口弹出时产生的噪声以及窗口中表示其用途的小图像。

MB_OK = 0x0
MB_OKCXL = 0x01
MB_YESNOCXL = 0x03
MB_YESNO = 0x04
MB_HELP = 0x4000
MB_SYSTEMMODAL = 4096
ICON_EXCLAIM = 0x30
ICON_INFO = 0x40
ICON_STOP = 0x10

def message_box(title, text):
    ctypes.windll.user32.MessageBoxW(0, text, title, MB_OK | ICON_INFO | MB_SYSTEMMODAL)