Мой проект - создать программу, которую вы можете запускать, пока вы играете в игры или другие программы в фоновом режиме. Когда вы нажимаете определенную клавишу, ваш блокнот должен открываться, а также закрываться после того, как вы нажмете ...

0
Dani_K 24 Мар 2021 в 11:47

2 ответа

Лучший ответ

Более сложным, но все же работающим примером может быть следующий. С этим кодом ваша программа всегда будет прослушивать клавиатуру, а не только когда вы сосредоточены на вводе, поэтому в вашем случае это может быть более практичным.

from pynput import keyboard
import subprocess
import threading

class MyException(Exception): pass

class Listening:
    """Is allways waiting for the keyboard input"""
    def __init__(self):
        self.notepad_open = False # to know the state
        with keyboard.Listener(
                on_press=self.on_press) as listener:
            try:
                listener.join()
            except:
                pass
    
    def on_press(self, key):
        try:
            if key.char == "k":
                if not self.notepad_open:
                    self.subprocess = \
                        subprocess.Popen('C:\\Windows\\System32\\notepad.exe')
                    self.notepad_open = True # update state
                else:
                    self.subprocess.kill()
                    self.notepad_open = False # update state
        except: # special key was pressed
            pass

thread = threading.Thread(target=lambda: Listening())
thread.start()
0
DecowVR 24 Мар 2021 в 09:17

Проблема в том, что вы проверяете ключ «k» только один раз в начале. Если вы хотите, чтобы программа работала правильно, попробуйте следующее:

import time
import subprocess
import keyboard
while True:
    if keyboard.is_pressed('k'):
        subprocess.Popen('C:\\Windows\\System32\\notepad.exe')
        time.sleep(5)

-Я использовал время, чтобы вы могли открыть программу только один раз в 5 секунд (если вам интересно, посмотрите, что будет без него) -

0
TudorTeo 24 Мар 2021 в 09:12