2016-08-21 5 views
0

通常、このコードは正常に動作します。Python 3.4 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") 
+0

Works for me。 'ctypes'のほとんどの問題は、使用されている関数に対して' argtypes'や 'restype'を定義しなかった結果です。 PythonのバージョンとOSの違いは、特定の定義がないと問題を引き起こす可能性が高くなります。 –

答えて

0

私はそれを行う方法を見つけました。

メッセージボックスの4番目の引数では、パイプ( '|')で区切られた値を入れる必要があります。制限されたテストから、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) 
関連する問題