今天blog上有個朋友問我如何用Python的win32gui包來畫一個窗體。其實win32gui包就是包裝了一下Windows API,所以寫出的代碼和用Windows API寫出的代碼的結(jié)構(gòu)是完全一樣的。下面就是一段示例代碼,是用一個老外網(wǎng)上搞到的,從下面代碼中可以看出解釋性語言的代碼精練之處。
import win32gui, win32con
def wndProc(hwnd, msg, wParam, lParam):
if msg == win32con.WM_CREATE: print ‘message: WM_CREATE‘
if msg == win32con.WM_SIZE: print ‘message: WM_SIZE‘
if msg == win32con.WM_PAINT: print ‘message: WM_PAINT‘
if msg == win32con.WM_CLOSE: print ‘message: WM_CLOSE‘
if msg == win32con.WM_DESTROY:
print ‘message: WM_DESTROY‘
win32gui.PostQuitMessage(0)
return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
wndClsStruct = win32gui.WNDCLASS()
wndClsStruct.hbrBackground = win32con.COLOR_BTNFACE + 1
wndClsStruct.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
wndClsStruct.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
wndClsStruct.lpszClassName = "MySimpleWindow"
wndClsStruct.lpfnWndProc = wndProc
wndClassAtom = win32gui.RegisterClass(wndClsStruct)
hwnd = win32gui.CreateWindow(
wndClassAtom, ‘Spark Test‘, win32con.WS_OVERLAPPEDWINDOW,
win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT,
0,0, 0, None)
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.UpdateWindow(hwnd)
win32gui.PumpMessages()
下面再來個貼圖,看看運行效果: