我在 win7 64 位上使用 python 2.7。这是一个代码,它只替换每个选定的 text
通过 <h1>text</h1>
. pynput-1.6.8用于全局热键和按键,而 pyperclip-1.7.0用于处理剪贴板。
但是我发现其实CTRL+C根本就没有按下。
问题是什么?谢谢
from pynput.keyboard import Key, Controller, GlobalHotKeys
import pyperclip
# initilize the clipboard to null
pyperclip.copy('')
keyboard = Controller()
def on_activate_h():
print('<ctrl>+<alt>+h pressed')
# copy current text to clipboard
# but in fact, it does not on my PC
# why
keyboard.press(Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl)
txt = pyperclip.paste()
if txt:
keyboard.type(f'<h1>{txt}</h1>')
def on_activate_i():
print('<ctrl>+<alt>+i pressed')
with GlobalHotKeys({
'<ctrl>+<alt>+h': on_activate_h,
'<ctrl>+<alt>+i': on_activate_i}) as h:
h.join()
最佳答案
如果有人仍然遇到这个问题:
复制不起作用,因为 Alt 键仍然是从您的全局热键按下的。
您可以在触发 Ctrl+C 之前简单地释放 Alt 键:
keyboard.release(Key.alt)
keyboard.press(Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl)
Linux 或 macOS 不需要此解决方法。
关于python - pynput 不发送 ctrl+c 来复制选中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61679913/