-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathUser32_CheckRadioButton.py
64 lines (51 loc) · 2.27 KB
/
User32_CheckRadioButton.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import win32gui
import win32con
import win32api
from ctypes import windll
from ctypes import wintypes
from ctypes import c_void_p, c_int
# modified from CheckDlgButton example with AI
# Radio button functions
CheckRadioButton = windll.user32.CheckRadioButton
CheckRadioButton.argtypes = [c_void_p, c_int, c_int, c_int]
CheckRadioButton.restype = c_int
title = "Radio Button"
def WndProc(hwnd, msg, wParam, lParam):
if msg == win32con.WM_COMMAND:
if wParam == 1: # First radio button
CheckRadioButton(hwnd, 1, 2, 1)
win32gui.SetWindowText(hwnd, "Option 1 selected")
elif wParam == 2: # Second radio button
CheckRadioButton(hwnd, 1, 2, 2)
win32gui.SetWindowText(hwnd, "Option 2 selected")
elif msg == win32con.WM_DESTROY:
win32gui.PostQuitMessage(0)
return win32gui.DefWindowProc(hwnd, msg, wParam, lParam)
def main():
wc = win32gui.WNDCLASS()
wc.lpszClassName = "Radio Button"
wc.hInstance = win32api.GetModuleHandle(None)
wc.hbrBackground = win32gui.GetSysColorBrush(win32con.COLOR_3DFACE)
wc.lpfnWndProc = WndProc
wc.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW)
class_atom = win32gui.RegisterClass(wc)
hwnd = win32gui.CreateWindow(class_atom, title,
win32con.WS_OVERLAPPEDWINDOW | win32con.WS_VISIBLE,
150, 150, 230, 150, 0, 0, wc.hInstance, None)
win32gui.CreateWindow("button", "Option 1",
win32con.WS_VISIBLE | win32con.WS_CHILD | win32con.BS_RADIOBUTTON,
20, 20, 185, 35,
hwnd, 1, win32api.GetModuleHandle(None), None)
win32gui.CreateWindow("button", "Option 2",
win32con.WS_VISIBLE | win32con.WS_CHILD | win32con.BS_RADIOBUTTON,
20, 60, 185, 35,
hwnd, 2, win32api.GetModuleHandle(None), None)
# Set default radio button (Option 1)
CheckRadioButton(hwnd, 1, 2, 1)
# Show & update the window
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.UpdateWindow(hwnd)
# Dispatch messages
win32gui.PumpMessages()
if __name__ == "__main__":
main()