![](/img/trans.png)
[英]How do I detect if my Python script is running in the 'Windows Terminal'
[英]How do I stop Linux from writing key inputs to the terminal while my python script is running?
我正在使用 python 3 並且每當我執行 python 腳本時,例如:
import time
while (True):
print("-test-")
time.sleep(1)
在我的 linux 終端上。 只要終端聚焦,每次擊鍵(如第三行中的“asdf”)都會打印到終端:
-test-
-test-
asdf-test-
-test-
有沒有辦法在我的 python 腳本運行時阻止終端輸出擊鍵(最好不更改操作系統或終端本身的配置)?
更具體地說,我想使用“pynput”來讀取鍵盤事件,而不會出現在我的輸出中:
from pynput import keyboard
import time
def key_pressed(key):
print("key {0} pressed".format(key))
if __name__ == "__main__":
listener = keyboard.Listener(on_press=key_pressed)
listener.start()
while(True):
print("-test-")
time.sleep(1)
這將是 output:
-test-
-test-
akey 'a' pressed
-test-
在第二次print("-test-")
之后按下鍵“a”而不是:
-test-
-test-
key 'a' pressed
-test-
我發現了這個:
如何防止 shell 在運行 python 腳本時獲取輸入(鍵盤)?
鏈接到:
如何“鎖定鍵盤”以防止在 X11/Linux/Gnome 上發送更多按鍵?
據我所知,這並不是我想要的,因為他們試圖完全阻止鍵盤輸入。 我只想在運行腳本的終端上阻止它。
您的擊鍵不會被打印出來。 你寫入終端。 只需松開終端 window 的焦點,它就可以正常工作。 如果 window 在后台,pynput 也可以工作。
編輯:您可以將print("key {0} pressed".format(key))
替換為print("\bkey {0} pressed".format(key))
。 \b
將退格鍵打印到終端。 它會刪除您剛剛寫入終端的密鑰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.