Почему l oop в конце кода не работает? - PullRequest
0 голосов
/ 02 февраля 2020

Вот мой код:

import time
from pynput import keyboard

def on_press(key):
     if 'char' in dir(key):  # check if char method exists,
        if key.char == 'q':  # check if it is 'q' key
                print("1")

def on_release(key):
    if 'char' in dir(key):  # check if char method exists,
        if key.char == 'q':  # check if it is 'q' key
            print("2")
# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()


string = 2
while True:
    time.sleep(1)
    if string == 2:
        print ("2")
    else:
        print ("1")

Я пытаюсь сделать al oop, который печатает «2» бесконечно после кода выше. Я действительно новичок в программировании, так что извините, если это так очевидно .

1 Ответ

0 голосов
/ 02 февраля 2020

Таким образом, вы хотите создать программу, которая будет бесконечно печатать клавишу, которую вы нажали на клавиатуре, с интервалом в 1 секунду, вот мой способ сделать это (я буду использовать модуль клавиатуры, так как у меня нет опыта работы с pynput и его более просто):

import time
import keyboard
x = keyboard.read_key()
while 1:
    time.sleep(1)
    if x == '2':
        print(2)

То есть x равно тому, что вы только что нажали на клавиатуре, оно не изменится, если вы не нажмете что-нибудь еще.

Итак, мы использовали некоторое время 1 здесь, так как целое число 1 всегда равно целому числу 1, оно всегда истинно, в основном используется в то время как истина, нет никакой разницы, хотя вы можете использовать значение True для основного l oop, поскольку оно более заметно, чем в то время как 1.

останавливает программу на 1 секунду

если x == '2': вы также можете использовать целые числа, но я просто хотел использовать его внутри '' S там

, если х равно 2 отпечатка 2

...