반응형

거창하게 gui 쓰는 방법 말고 간단하게 메시지박스만 띄우고 싶었는데 검색해보니 죄다 Tkinter나 PyQt같은 라이브러리를 사용하는 방법 뿐이었다. 그러다가 윈도우api를 호출해서 메시지박스를 띄우는 방법을 찾았는데 이건 파이썬 2.7 용 코드라 그런지 한글이 깨지는 참사가...

그래서 좀 더 찾아보니까 아까 그 윈도우api를 호출해서 메시지박스를 띄우는 코드가 파이썬 2.7이 ansi를 사용해서 파이썬 3에서 깨지던 거더라... 호출함수를 유니코드용으로 바꿨더니 문제해결!


import ctypes

msg = ctypes.windll.user32.MessageBoxW(None, "내용", "제목", 0)
if msg == 1:
	print("OK")

ctypes를 임포드하고 위 코드처럼 사용하면된다.

아래와 같은 함수를 만들어두면 요긴.


def messageBox(title, text, style):
	return ctypes.windll.user32.MessageBoxW(None, text, title, style)

마지막 style 인자에서 메시지박스의 생김새를 지정할 수 있다.

0: 확인(1)
1: 확인(1), 취소(2)
2: 중단(3), 다시시도(4), 무시(5)
3: 예(6), 아니오(7), 취소(2)
4: 예(6), 아니오(7)
5: 다시시도(4), 취소(2)
6: 취소(2), 다시시도(10), 계속(11)

아 그리고 위에서 괄호 안에 있는 숫자는 반환값입니다. 이 반환값으로 어느 버튼을 눌렀는지 알 수 있습니다.

이거 외에도 아이콘을 표시한다던지 기본 버튼을 지정한다던지 더 다양한 스타일이 있는데 그건 아래 링크를 참고.

https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms645505.aspx

반응형

+ Recent posts