Почему Python аварийно завершает работу при отправке [закрыто]Python

Программы на Python
Гость
Почему Python аварийно завершает работу при отправке [закрыто]

Сообщение Гость »


Python продолжает аварийно завершать работу, когда я нажимаю кнопку «Отправить» в графическом интерфейсе :(
Когда я пытался нажать «Отправить», происходит сбой, никаких ошибок, просто идет :(
Это треска

Код: Выделить всё

import tkinter as tk
from time import sleep
from ctypes import Structure, Union, c_ushort, c_ulong, c_short, c_long, WinDLL, windll, POINTER, pointer, sizeof
from threading import Thread
from time import sleep

class KeyBdInput(Structure):
_fields_ = [("wVk", c_ushort),
("wScan", c_ushort),
("dwFlags", c_ulong),
("time", c_ulong),
("dwExtraInfo", POINTER(c_ulong))]

class HardwareInput(Structure):
_fields_ = [("uMsg", c_ulong),
("wParamL", c_short),
("wParamH", c_ushort)]

class MouseInput(Structure):
_fields_ = [("dx", c_long),
("dy", c_long),
("mouseData", c_ulong),
("dwFlags", c_ulong),
("time", c_ulong),
("dwExtraInfo", POINTER(c_ulong))]

class Input_I(Union):
_fields_ = [("ki", KeyBdInput),
("mi", MouseInput),
("hi", HardwareInput)]

class Input(Structure):
_fields_ = [("type", c_ulong),
("ii", Input_I)]

def PressKey(directInputKeyboard):
DIK = {'escape': 0x01, '1': 0x02, '2': 0x03, '3': 0x04, '4': 0x05, '5': 0x06, '6': 0x07, '7': 0x08, '8': 0x09, '9': 0x0A, '0': 0x0B, 'minus': 0x0C, 'equals': 0x0D, 'back': 0x0E, 'tab': 0x0F, 'q': 0x10, 'w': 0x11, 'e': 0x12, 'r': 0x13, 't': 0x14, 'y': 0x15, 'u': 0x16, 'i': 0x17, 'o': 0x18, 'p': 0x19, 'lbracket': 0x1A, 'rbracket': 0x1B, 'return': 0x1C, 'lcontrol': 0x1D, 'a': 0x1E, 's': 0x1F, 'd': 0x20, 'f': 0x21, 'g': 0x22, 'h': 0x23, 'j': 0x24, 'k': 0x25, 'l': 0x26, 'semicolon': 0x27, 'apostrophe': 0x28, 'grave': 0x29, 'lshift': 0x2A, 'backslash': 0x2B, 'z': 0x2C, 'x': 0x2D, 'c': 0x2E, 'v': 0x2F, 'b': 0x30, 'n': 0x31, 'm': 0x32, 'comma': 0x33, 'period': 0x34, 'slash': 0x35, 'rshift': 0x36, 'multiply': 0x37, 'lmenu': 0x38, ' ': 0x39, 'capital': 0x3A, 'f1': 0x3B, 'f2': 0x3C, 'f3': 0x3D, 'f4': 0x3E, 'f5': 0x3F, 'f6': 0x40, 'f7': 0x41, 'f8': 0x42, 'f9': 0x43, 'f10': 0x44, 'numlock': 0x45, 'scroll': 0x46, 'numpad7': 0x47, 'numpad8': 0x48, 'numpad9': 0x49, '-': 0x4A, 'numpad4': 0x4B, 'numpad5': 0x4C, 'numpad6': 0x4D, 'add': 0x4E, 'numpad1': 0x4F, 'numpad2': 0x50, 'numpad3': 0x51, 'numpad0': 0x52, 'decimal': 0x53, 'oem_102': 0x56, 'f11': 0x57, 'f12': 0x58, 'f13': 0x64, 'f14': 0x65, 'f15': 0x66, 'kana': 0x70, 'abnt_c1': 0x73, 'convert': 0x79, 'noconvert': 0x7B, 'yen': 0x7D, 'abnt_c2': 0x7E, 'numpadequals': 0x8D, 'prevtrack': 0x90, 'at': 0x91, 'colon': 0x92, 'underline': 0x93, 'kanji': 0x94, 'stop': 0x95, 'ax': 0x96, 'unlabeled': 0x97, 'nexttrack': 0x99, 'numpadenter': 0x9C, 'rcontrol': 0x9D, 'mute': 0xA0, 'calculator': 0xA1, 'playpause': 0xA2, 'mediastop': 0xA4, 'volumedown': 0xAE, 'volumeup': 0xB0, 'webhome': 0xB2, 'numpadcomma': 0xB3, 'divide': 0xB5, 'sysrq': 0xB7, 'rmenu': 0xB8, 'pause': 0xC5, 'home': 0xC7, 'up': 0xC8, 'prior': 0xC9, 'left': 0xCB, 'right': 0xCD, 'end': 0xCF, 'down': 0xD0, 'next': 0xD1, 'insert': 0xD2, 'delete': 0xD3, 'lwin': 0xDB, 'rwin': 0xDC, 'apps': 0xDD, 'power': 0xDE, 'sleep': 0xDF, 'wake': 0xE3, 'websearch': 0xE5, 'webfavorites': 0xE6, 'webrefresh': 0xE7, 'webstop': 0xE8, 'webforward': 0xE9, 'webback': 0xEA, 'mycomputer': 0xEB, 'mail': 0xEC, 'mediaselect': 0xED}
for char in directInputKeyboard:
directInputKeyboard = DIK.get(char.lower())
if directInputKeyboard is not None:
extra = c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput(0, directInputKeyboard, 0x0008, 0, pointer(extra))
x = Input(c_ulong(1), ii_)
windll.user32.SendInput(1, pointer(x), sizeof(x))

def ReleaseKey(directInputKeyboard):
DIK = {'escape': 0x01, '1': 0x02, '2': 0x03, '3': 0x04, '4': 0x05, '5': 0x06, '6': 0x07, '7': 0x08, '8': 0x09, '9': 0x0A, '0': 0x0B, 'minus': 0x0C, 'equals': 0x0D, 'back': 0x0E, 'tab': 0x0F, 'q': 0x10, 'w': 0x11, 'e': 0x12, 'r': 0x13, 't': 0x14, 'y': 0x15, 'u': 0x16, 'i': 0x17, 'o': 0x18, 'p': 0x19, 'lbracket': 0x1A, 'rbracket': 0x1B, 'return': 0x1C, 'lcontrol': 0x1D, 'a': 0x1E, 's': 0x1F, 'd': 0x20, 'f': 0x21, 'g': 0x22, 'h': 0x23, 'j': 0x24, 'k': 0x25, 'l': 0x26, 'semicolon': 0x27, 'apostrophe': 0x28, 'grave': 0x29, 'lshift': 0x2A, 'backslash': 0x2B, 'z': 0x2C, 'x': 0x2D, 'c': 0x2E, 'v': 0x2F, 'b': 0x30, 'n': 0x31, 'm': 0x32, 'comma': 0x33, 'period': 0x34, 'slash':  0x35, 'rshift': 0x36, 'multiply': 0x37, 'lmenu': 0x38, ' ': 0x39, 'capital': 0x3A, 'f1': 0x3B, 'f2': 0x3C, 'f3': 0x3D, 'f4': 0x3E, 'f5': 0x3F, 'f6': 0x40, 'f7': 0x41, 'f8': 0x42, 'f9': 0x43, 'f10': 0x44, 'numlock': 0x45, 'scroll': 0x46, 'numpad7': 0x47, 'numpad8': 0x48, 'numpad9': 0x49, '-': 0x4A, 'numpad4': 0x4B, 'numpad5': 0x4C, 'numpad6': 0x4D, 'add': 0x4E, 'numpad1': 0x4F, 'numpad2': 0x50, 'numpad3': 0x51, 'numpad0': 0x52, 'decimal': 0x53, 'oem_102': 0x56, 'f11': 0x57, 'f12': 0x58, 'f13': 0x64, 'f14': 0x65, 'f15': 0x66, 'kana': 0x70, 'abnt_c1': 0x73, 'convert': 0x79, 'noconvert': 0x7B, 'yen': 0x7D, 'abnt_c2': 0x7E, 'numpadequals': 0x8D, 'prevtrack': 0x90, 'at': 0x91, 'colon': 0x92, 'underline': 0x93, 'kanji': 0x94, 'stop': 0x95, 'ax': 0x96, 'unlabeled': 0x97, 'nexttrack': 0x99, 'numpadenter': 0x9C, 'rcontrol': 0x9D, 'mute': 0xA0, 'calculator': 0xA1, 'playpause': 0xA2, 'mediastop': 0xA4, 'volumedown': 0xAE, 'volumeup': 0xB0, 'webhome': 0xB2, 'numpadcomma': 0xB3, 'divide': 0xB5, 'sysrq': 0xB7, 'rmenu': 0xB8, 'pause': 0xC5, 'home': 0xC7, 'up': 0xC8, 'prior': 0xC9, 'left': 0xCB, 'right': 0xCD, 'end': 0xCF, 'down': 0xD0, 'next': 0xD1, 'insert': 0xD2, 'delete': 0xD3, 'lwin': 0xDB, 'rwin': 0xDC, 'apps': 0xDD, 'power': 0xDE, 'sleep': 0xDF, 'wake': 0xE3, 'websearch': 0xE5, 'webfavorites': 0xE6, 'webrefresh': 0xE7, 'webstop': 0xE8, 'webforward': 0xE9, 'webback': 0xEA, 'mycomputer': 0xEB, 'mail': 0xEC, 'mediaselect': 0xED}
for char in directInputKeyboard:
directInputKeyboard = DIK.get(char.lower())
if directInputKeyboard is not None:
extra = c_ulong(0)
ii_ = Input_I()
ii_.ki = KeyBdInput(0, directInputKeyboard, 0x0008 | 0x0002, 0, pointer(extra))
x = Input(c_ulong(1), ii_)
windll.user32.SendInput(1, pointer(x), sizeof(x))

def PressAndReleaseKey(directInputKeyboard, releaseAfter=0.1, times=1, wait=0):
for _ in range(times):
PressKey(directInputKeyboard)
sleep(releaseAfter)
ReleaseKey(directInputKeyboard)
sleep(wait)

def isPressed(key):
VK = {'left_mouse': 0x01, 'right_mouse': 0x02, 'cancel': 0x03, 'middle_mouse': 0x04, 'x_mouse1': 0x05, 'x_mouse2': 0x06, '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, 'insert': 0x2D, 'delete': 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, 'left_windows': 0x5B, 'right_windows': 0x5C, 'applications': 0x5D, 'sleep': 0x5F, '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': 0x6A, 'add': 0x6B, 'separator': 0x6C, 'subtract': 0x6D, 'decimal': 0x6E, 'divide': 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_ctrl': 0xA2, 'right_ctrl': 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, ',': 0xE2, 'process_key': 0xE5, 'attn_key': 0xF6, 'crsel_key': 0xF7, 'exsel_key': 0xF8, 'play_key': 0xFA, 'zoom_key': 0xFB, 'clear_key': 0xFE}
return WinDLL('user32').GetKeyState(VK[key]) &  0x8000 != 0

def addHotkey(key, function, loop=False):
if not callable(function):
return

while isPressed(key):
sleep(0.1)

try:
if not loop:
while True:
if isPressed(key):
function()
while isPressed(key):
sleep(0.1)
else:
global running
running = False

def init():
global running

if not running:
running = True
Thread(target=start).start()
else:
running = False

def start():
while running:
function()

if not callable(init):
exit()

while isPressed(key):
sleep(0.1)

while True:
if isPressed(key):
init()
while isPressed(key):
sleep(0.1)
except KeyboardInterrupt:
running = False
pass

def main():
hotkey_value = hotkey_var.get()
def press():
PressAndReleaseKey(ktp_var.get())
sleep(int(ms_var.get())/1000)
addHotkey(hotkey_value, press, loop=True)

def validate_hotkey(event):
key = event.char
if key.isalpha():
return True
else:
return False

def validate_ktp(event):
key = event.char
if key.isalpha():
return True
else:
return False

def validate_ms(event):
key = event.char
if key.isdigit():
return True
else:
return False

root = tk.Tk()
root.title("idk wat to put here")
root.resizable(0, 0)

hotkey_label = tk.Label(root, text="hotkey:")
hotkey_label.grid(row=0, column=0, padx=10, pady=5)
hotkey_var = tk.StringVar()
hotkey = tk.Entry(root, textvariable=hotkey_var)
hotkey.grid(row=0, column=1, padx=10, pady=5)
hotkey.bind("", validate_hotkey)

ktp_label = tk.Label(root, text="key to press:")
ktp_label.grid(row=1, column=0, padx=10, pady=5)
ktp_var = tk.StringVar()
ktp = tk.Entry(root, textvariable=ktp_var)
ktp.grid(row=1, column=1, padx=10, pady=5)
ktp.bind("", validate_ktp)

ms_label = tk.Label(root, text="delay in ms:")
ms_label.grid(row=2, column=0, padx=10, pady=5)
ms_var = tk.StringVar()
ms = tk.Entry(root, textvariable=ms_var)
ms.grid(row=2, column=1, padx=10, pady=5)
ms.bind("", validate_ms)

submit_button = tk.Button(root, text="Submit", command=main)
submit_button.grid(row=3, columnspan=2, padx=10, pady=10)

root.mainloop()
I have absolutely no idea why it does that :(
Can anyone help meh
I tried literally everything but nothing worked
(literally everything like everything everything, everything^2 i don't know how to describe this)


Источник: https://stackoverflow.com/questions/781 ... submitting

Вернуться в «Python»