我正在撰寫一個小工具,用 Tkinter 在螢屏上顯示按鍵,這對于螢屏錄制很有用。
有沒有辦法讓Tkinter全域監聽系統的所有按鍵?(對于每個擊鍵,包括F1, CTRL, ...,即使 Tkinter 視窗沒有焦點)
我目前知道一個帶有pyHook.HookManager(),pythoncom.PumpMessages()和Listen 的解決方案的快捷方式(如 WIN A),即使 Python 腳本沒有焦點但是否有 100% 的tkinter解決方案?
確實,pyhook僅適用于 Python 2,并且pyhook3似乎已被放棄,所以我更喜歡 Windows 的內置 Python3/Tkinter 解決方案。
uj5u.com熱心網友回復:
解決方案1:如果您需要在當前視窗中捕獲鍵盤事件,您可以使用:
from tkinter import *
def key_press(event):
key = event.char
print(f"'{key}' is pressed")
root = Tk()
root.geometry('640x480')
root.bind('<Key>', key_press)
mainloop()
解決方案 2:如果您想捕獲鍵而不管哪個視窗有焦點,您可以使用keyboard
uj5u.com熱心網友回復:
正如tkinter 同時使用兩個鍵所建議的那樣,您可以使用以下命令檢測同時按下的所有鍵:
history = []
def keyup(e):
print(e.keycode)
if e.keycode in history :
history.pop(history.index(e.keycode))
var.set(str(history))
def keydown(e):
if not e.keycode in history :
history.append(e.keycode)
var.set(str(history))
root = Tk()
root.bind("<KeyPress>", keydown)
root.bind("<KeyRelease>", keyup)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446466.html
上一篇:在第二個視窗中保存用戶輸入
下一篇:插入和當前有什么區別?
