- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个脚本,它截取屏幕截图并解码图像名称中的特定按键,如下所示。
我的问题是,当我按下键盘左箭头时,数字 4 也被按下了。
我在谷歌或键盘库的文档中找不到任何内容。我正在使用 Windows 和 Python 3.6.5
(75,)
left arrow pressed
(5, 75)
4 pressed
同样的事情发生在向下箭头上,但数字 3。
(80,)
down arrow pressed
(3, 80)
2 pressed
代码:
from PIL import ImageGrab
import keyboard # using module keyboard
import time
keys = [
"down arrow",
"up arrow",
"left arrow",
"right arrow",
"w",
"s",
"a",
"d",
"1",
"2",
"3",
"4",
"q",
"e",
if __name__ == "__main__":
while True:
code = []
try:
for key in keys:
if keyboard.is_pressed(key):
print(keyboard.key_to_scan_codes(key))
print(f"{key} pressed")
code.append(1)
else:
code.append(0)
if keyboard.is_pressed('esc'):
print(key + " pressed")
break
c = "".join(map(str, code))
snapshot = ImageGrab.grab()
save_path = str(int(time.time()*1000)) + "-" + c + ".jpg"
snapshot.save("tmp\\" + save_path)
except:
break
最佳答案
keyboard
模块对于这些实例有简单的解决方案,他们使用 event-triggered
激活而不是 polling
正如在您的尝试中使用的那样。
示例代码:
import keyboard
def handleLeftKey(e):
if keyboard.is_pressed("4"):
print("left arrow was pressed w/ key 4")
# work your magic
keyboard.on_press_key("left", handleLeftKey)
# self-explanitory: when the left key is pressed down then do something
keyboard.on_release_key("left", handleLeftKey02)
# also self-explanitory: when the left key is released then do something
# don't use both ...on_release & ...on_press or it will be
# triggered twice per key-use (1 up, 1 down)
if __name__ == "__main__":
while True:
code = []
try:
for key in keys:
if keyboard.is_pressed(key):
print(keyboard.key_to_scan_codes(key))
print(f"{key} pressed")
code.append(1)
else:
code.append(0)
import keyboard
keys = [
"down",
"up",
"left",
"right",
"w",
"s",
"a",
"d",
"1",
"2",
"3",
"4",
"q",
"e",
"f"
]
def kbdCallback(e):
found = False
for key in keys:
if key == keyboard.normalize_name(e.name):
print(f"{key} was pressed")
found = True
# work your magic
if found == True:
if e.name == "left":
if keyboard.is_pressed("4"):
print("4 & left arrow were pressed together!")
# work your magic
keyboard.on_press(kbdCallback)
# same as keyboard.on_press_key, but it does this for EVERY key
"left arrow"
当它真正被识别为
"left"
(至少在我的系统上,它可能与您的系统不同,但我假设您希望它适用于所有系统,因此使用
"left"
会更安全)
"4+left"
的情况下可以使用或
"left+4"
import keyboard
def left4trigger:
print("the keys were pressed")
keyboard.add_hotkey("4+left", left4trigger)
# works as 4+left or left+4 (all of the examples do)
关于Python键盘库方向键问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973659/
警告:我不确定这篇文章是否更适合 SuperUser 或 SE 系列中的其他论坛。如果您知道这篇文章的更合适位置,请告诉我,我会迁移它。 我知道 eclipse for Java 扩展了 Ctrl+L
我正在使用 colemak,因此我重新映射了我的方向键,就像这样 noremap n h noremap e j noremap i k noremap o l noremap h n noremap
我想知道您是否可以像 Java、C+ 等一样接收键盘输入。或者如果没有外部库? 以下是有关 2D 迷宫游戏的一些信息: 您使用箭头键在迷宫中导航。您可以使用向上和向下箭头键选择菜单中的对象,例如: -
我想使用 google map api 来获取两个位置之间的路线。在我的 IOS 应用程序中。我尝试为项目创建公钥并在开发人员控制台中启用使用 API。但我收到此错误:此 ip 站点或移动应用程序未被
是否有内置的方法将箭头键(右、左)绑定(bind)到 buefy 分页元素?还是我需要使用 vanillaJS 键盘事件? 最佳答案 Vue 定义 key modifiers 关于vue.js -
我是一名优秀的程序员,十分优秀!