为什么代码末尾的循环不起作用?

时间:2020-02-02 10:53:00

标签: python python-3.x loops pynput

这是我的代码:

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")

我试图在上面的代码之后无限期地循环显示“ 2”。我真的是编程新手,所以很抱歉。

1 个答案:

答案 0 :(得分:0)

因此,基本上,您想制作一个程序,以1秒的间隔无限地打印出您在键盘上按下的键,这是我的操作方式(我将使用键盘模块,因为我对Pynput及其操作没有经验更简单):

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

所以x等于您在键盘上所按的,只要您不按其他任何键,它就不会改变。

因此我们在这里使用了while 1,因为整数1始终等于整数1,所以它始终为true,基本上在true时使用,没有区别,尽管您可能希望在主循环中使用while为True,因为它更引人注目比起1。

它会停止程序1秒钟

如果x =='2':您也可以使用整数,但是我只想在''S那儿使用它

如果x等于2,则打印2