簡體   English   中英

暫停 python 腳本等待按鍵

[英]Pause python script wait for key press

我有一個相對簡單的腳本和一個可能很簡單的問題。 在 inte.net 周圍,我收集了一些關於如何在我的 python 代碼中使用直接按鍵作為輸入的解決方案。 我更喜歡這些而不是 raw_input,因為它感覺更快。 就像我有一個包含 3 個選項的菜單,每個菜單中有 3 個選項,我可以輕松地按鍵盤上的 3 然后按 2 以到達我需要的位置 go。

代碼是:

import keyboard
import time

def mainmenu():
    while(True):
        print ('1. Scan')
        print ('2. Ping')
        print ('3. Exit')

        if keyboard.is_pressed('1'):
            print ('Option 1\n')
        elif keyboard.is_pressed('2'):
            print ('Option 2\n')
        elif keyboard.is_pressed('3'):
            print ('Exiting\n')
            exit(0)
        else:
            print ('none of the specified options were chosen')
            time.sleep(0.3)
            exit(0)
mainmenu()

我只想要一些可以暫停代碼的東西,我可以按下一個鍵。
由於某種原因,我不能使用time.sleep() 它也不喜歡在它之前或之后的瞬間輸入。
如果我能得到一個 function 就太棒了,這樣我就可以在其他地方輸入它了。

如果最后沒有我的 else 語句,while 循環就會繼續運行。
如果我在 while 循環中沒有它,腳本會在 1 秒內打印選項,然后默認為 else,因為我在 1 秒內沒有按下任何鍵。
我知道它有效,因為如果我取出 else 語句,當它一遍又一遍地向選項發送垃圾郵件時,我按 3,IDLE 會詢問我是否要在腳本運行時終止它。

您可以使用input()獲得相同的效果。

import time

def mainmenu():
    while(True):
        print ('1. Scan')
        print ('2. Ping')
        print ('3. Exit')

        x= input()
        if x==1:
            print ('Option 1\n')
        elif x==2:
            print ('Option 2\n')
        elif x==3:
            print ('Exiting\n')
            exit(0)
        else:
            print ('none of the specified options were chosen')
            time.sleep(0.3)
            exit(0)
mainmenu()

使用keyboard.read_key() ,因為它將阻止其余代碼的執行,直到發生鍵盤事件為止,然后返回該事件的名稱或(如果缺少)其掃描代碼。

import keyboard
import time

def mainmenu():
    print ('1. Scan')
    print ('2. Ping')
    print ('3. Exit')

    while(True):
        a = keyboard.read_key()

        if a == '1' or a == '2':
            print("Option {} was pressed\n".format(a))
        elif a == '3':
            print("Exiting\n")
            exit(0)
        else:
            print("None\n")
            exit(0)

        time.sleep(0.3)

mainmenu()

導入時間

def mainmenu(): while(True): print ('1. Scan') print ('2. Ping') print ('3. Exit')

    x=input()
    if x=='1':
        print ('Option 1\n')
    elif x=='2':
        print ('Option 2\n')
    elif x=='3':
        print ('Exiting\n')
        exit(0)
    else:
        print ('none of the specified options were chosen')
        time.sleep(1)
        

主菜單()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM