QDialog blankly freezes unless I set a breakpoint in the code, break and continue.
-
I have a QDialog subclass that works perfectly fine as long as you set a breakpoint where exec_() is called and then continue in the debugger. This is weird. Why does it work only with a breakpoint? Setting a delay timer doesn't solve this. Is there a hack to set a break point and then continue programatically. Or do you know what's going on ? I'm doing this app in PyQt5 (Python3.5.2)
EDIT:
I've observed that it works successfully if I click and hold onto the main window title bar. And now as I type this, I just found what is triggering this behavior.
Here is auto_keyboard_mouse.py. When I call typer() and/or pressAndHold() before I exec_() the dialog, it fails. If I comment out those calls, it succeeds. So I'm clearly messing up Qt with Win32 stuff. But I need to... So any ideas what could be going wrong?
import win32api, win32con import time def setMousePos(pos): win32api.SetCursorPos(pos) def mousePressAt(pos): win32api.SetCursorPos(pos) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, pos[0], pos[1], 0,0) def mouseReleaseAt(pos): win32api.SetCursorPos(pos) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, pos[0], pos[1], 0,0) def mousePos(): return win32api.GetCursorPos() def mouseClickAt(pos): win32api.SetCursorPos(pos) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, pos[0], pos[1], 0,0) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, pos[0], pos[1], 0,0) def mouseRightClickAt(pos): win32api.SetCursorPos(pos) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, pos[0], pos[1], 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, pos[0], pos[1], 0, 0) #Giant dictonary to hold key name and VK value VK_CODE = {'backspace':0x08, 'tab':0x09, 'clear':0x0C, 'enter':0x0D, 'shift':0x10, 'ctrl':0x11, 'alt':0x12, 'pause':0x13, 'caps_lock':0x14, 'esc':0x1B, 'spacebar':0x20, 'page_up':0x21, 'page_down':0x22, 'end':0x23, 'home':0x24, 'left_arrow':0x25, 'up_arrow':0x26, 'right_arrow':0x27, 'down_arrow':0x28, 'select':0x29, 'print':0x2A, 'execute':0x2B, 'print_screen':0x2C, 'ins':0x2D, 'del':0x2E, 'help':0x2F, '0':0x30, '1':0x31, '2':0x32, '3':0x33, '4':0x34, '5':0x35, '6':0x36, '7':0x37, '8':0x38, '9':0x39, 'a':0x41, 'b':0x42, 'c':0x43, 'd':0x44, 'e':0x45, 'f':0x46, 'g':0x47, 'h':0x48, 'i':0x49, 'j':0x4A, 'k':0x4B, 'l':0x4C, 'm':0x4D, 'n':0x4E, 'o':0x4F, 'p':0x50, 'q':0x51, 'r':0x52, 's':0x53, 't':0x54, 'u':0x55, 'v':0x56, 'w':0x57, 'x':0x58, 'y':0x59, 'z':0x5A, 'numpad_0':0x60, 'numpad_1':0x61, 'numpad_2':0x62, 'numpad_3':0x63, 'numpad_4':0x64, 'numpad_5':0x65, 'numpad_6':0x66, 'numpad_7':0x67, 'numpad_8':0x68, 'numpad_9':0x69, 'multiply_key':0x6A, 'add_key':0x6B, 'separator_key':0x6C, 'subtract_key':0x6D, 'decimal_key':0x6E, 'divide_key':0x6F, 'F1':0x70, 'F2':0x71, 'F3':0x72, 'F4':0x73, 'F5':0x74, 'F6':0x75, 'F7':0x76, 'F8':0x77, 'F9':0x78, 'F10':0x79, 'F11':0x7A, 'F12':0x7B, 'F13':0x7C, 'F14':0x7D, 'F15':0x7E, 'F16':0x7F, 'F17':0x80, 'F18':0x81, 'F19':0x82, 'F20':0x83, 'F21':0x84, 'F22':0x85, 'F23':0x86, 'F24':0x87, 'num_lock':0x90, 'scroll_lock':0x91, 'left_shift':0xA0, 'right_shift ':0xA1, 'left_control':0xA2, 'right_control':0xA3, 'left_menu':0xA4, 'right_menu':0xA5, 'browser_back':0xA6, 'browser_forward':0xA7, 'browser_refresh':0xA8, 'browser_stop':0xA9, 'browser_search':0xAA, 'browser_favorites':0xAB, 'browser_start_and_home':0xAC, 'volume_mute':0xAD, 'volume_Down':0xAE, 'volume_up':0xAF, 'next_track':0xB0, 'previous_track':0xB1, 'stop_media':0xB2, 'play/pause_media':0xB3, 'start_mail':0xB4, 'select_media':0xB5, 'start_application_1':0xB6, 'start_application_2':0xB7, 'attn_key':0xF6, 'crsel_key':0xF7, 'exsel_key':0xF8, 'play_key':0xFA, 'zoom_key':0xFB, 'clear_key':0xFE, '+':0xBB, ',':0xBC, '-':0xBD, '.':0xBE, '/':0xBF, '`':0xC0, ';':0xBA, '[':0xDB, '\\':0xDC, ']':0xDD, "'":0xDE, '`':0xC0} def press(*args): ''' one press, one release. accepts as many arguments as you want. e.g. press('left_arrow', 'a','b'). ''' for i in args: win32api.keybd_event(VK_CODE[i], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0) def pressAndHold(*args): ''' press and hold. Do NOT release. accepts as many arguments as you want. e.g. pressAndHold('left_arrow', 'a','b'). ''' for i in args: win32api.keybd_event(VK_CODE[i], 0,0,0) time.sleep(.05) def pressHoldRelease(*args): ''' press and hold passed in strings. Once held, release accepts as many arguments as you want. e.g. pressAndHold('left_arrow', 'a','b'). this is useful for issuing shortcut command or shift commands. e.g. pressHoldRelease('ctrl', 'alt', 'del'), pressHoldRelease('shift','a') ''' for i in args: win32api.keybd_event(VK_CODE[i], 0,0,0) time.sleep(.05) for i in args: win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0) time.sleep(.1) def release(*args): ''' release depressed keys accepts as many arguments as you want. e.g. release('left_arrow', 'a','b'). ''' for i in args: win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0) def typer(string=None,*args): ## time.sleep(4) for i in string: if i == ' ': win32api.keybd_event(VK_CODE['spacebar'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['spacebar'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '!': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['1'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['1'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '@': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['2'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['2'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '{': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['['], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['['],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '?': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['/'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['/'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == ':': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE[';'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE[';'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '"': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['\''], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['\''],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '}': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE[']'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE[']'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '#': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['3'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['3'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '$': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['4'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['4'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '%': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['5'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['5'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '^': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['6'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['6'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '&': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['7'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['7'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '*': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['8'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['8'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '(': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['9'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['9'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == ')': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['0'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['0'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '_': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['-'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['-'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '=': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['+'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['+'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '~': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['`'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['`'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '<': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE[','], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE[','],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == '>': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['.'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['.'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'A': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['a'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['a'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'B': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['b'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['b'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'C': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['c'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['c'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'D': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['d'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['d'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'E': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['e'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['e'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'F': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['f'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['f'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'G': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['g'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['g'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'H': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['h'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['h'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'I': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['i'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['i'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'J': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['j'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['j'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'K': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['k'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['k'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'L': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['l'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['l'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'M': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['m'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['m'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'N': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['n'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['n'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'O': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['o'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['o'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'P': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['p'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['p'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'Q': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['q'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['q'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'R': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['r'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['r'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'S': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['s'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['s'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'T': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['t'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['t'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'U': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['u'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['u'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'V': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['v'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['v'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'W': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['w'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['w'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'X': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['x'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['x'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'Y': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['y'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['y'],0 ,win32con.KEYEVENTF_KEYUP ,0) elif i == 'Z': win32api.keybd_event(VK_CODE['left_shift'], 0,0,0) win32api.keybd_event(VK_CODE['z'], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0) win32api.keybd_event(VK_CODE['z'],0 ,win32con.KEYEVENTF_KEYUP ,0) else: win32api.keybd_event(VK_CODE[i], 0,0,0) time.sleep(.05) win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)
-
Hi,
Why are you mixing both like that ?