Горячие клавиши в свернутой программе на базе Tkinter - PullRequest
2 голосов
/ 09 мая 2020

Я делаю хак для игры и хочу запустить / остановить скрипт с помощью горячей клавиши F7, пока игра работает в полноэкранном режиме. Я пытался использовать для этого root.bind и pynput, но ни один из них не работал.

Вот мой код:

hack_running = False


def hack():
    if  hack_running:
        PressKeyPynput(0x02)
        time.sleep(0.08)
        ReleaseKeyPynput(0x02)
        PressKeyPynput(0x11)
        time.sleep(0.5)
        ReleaseKeyPynput(0x11)
        PressKeyPynput(0x1F)
        time.sleep(0.6)
        ReleaseKeyPynput(0x1F)
        PressKeyPynput(0x02)
        time.sleep(0.08)
        ReleaseKeyPynput(0x02)
        root.after(900000, hack)

def Start_stop():
    global hack_running
    if Startk['text'] == 'Start':
        hack_running = True
        hack()
        Startk.config(text='Stop')
    else:
        hack_running = False
        Startk.config(text='Start')


root = tk.Tk()

root.resizable(False, False)

canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()

frame = tk.Frame(root, bg='black')
frame.place(relwidth=1, relheight=1)

Startk = tk.Button(frame, text='Start', font=("Calibri", 10), command=Start_stop)
Startk.pack(side='top', pady='50')

root.mainloop()

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Pynput имеет простой класс, который предоставляет функцию горячих клавиш под названием GlobalHotKeys. Ссылка здесь.


К сожалению, если есть только python, я думаю, что это невозможно ' Если вы хотите, чтобы это работало в игре, сделайте больше.

Обычно в игре есть поток слушателя клавиатуры. Когда ваш python скрипт работает вместе с вашей игрой, они вызовут конфликт. И ваш * python скрипт не мог нормально работать. (И игра всегда будет принимать меры для предотвращения читерства.)

Насколько я знаю, скрипт AutoHotkey мог работать в игре (по крайней мере, у меня он работал в прошлое). Официальный документ AutoHotkey . На macOS, см. это

2 голосов
/ 09 мая 2020

Попробуйте использовать pynput:

import pynput

def run():
    print('f7') # your code

def press(key):
    if key == pynput.keyboard.Key.f7:
        run()

pynput.keyboard.Listener(on_press=press).run()

Комбинации клавиш см. в этом выпуске github . Надеюсь, это поможет!

...