【问题标题】:Not able to select text in pynput无法在 pynput 中选择文本
【发布时间】:2018-10-14 05:46:43
【问题描述】:

我正在使用pynput 库编写一个python 脚本,我想在其中选择特定长度的文本。

为此,我首先按 shift,然后按多次左箭头键。以便选择光标 id 左侧的文本,并可进一步用于复制目的。

这是我的代码:

from pynput import keyboard
from pynput.keyboard import Controller

keyboard_controller = Controller()
with keyboard_controller.pressed(keyboard.Key.shift_l):
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)

这会将我的光标向左移动 3 步,但即使按下 shift,文本也不会被选中。我在这里缺少什么?

编辑:

操作系统:Windows 10

环境:Python 3.6.5

这是我的 vs 代码中发生的事情的演示。

【问题讨论】:

    标签: python pynput


    【解决方案1】:

    也许试试这个?

    from pynput.keyboard import Key
    from pynput.keyboard import Controller
    
    keyboard = Controller()
    

    选项 1:

    with keyboard.pressed(Key.shift):
        keyboard.press(Key.left)
        keyboard.release(Key.left)
        keyboard.press(Key.left)
        keyboard.release(Key.left)
    

    选项 2:

    keyboard.press(Key.shift)
    keyboard.press(Key.left)
    keyboard.release(Key.left)
    keyboard.press(Key.left)
    keyboard.release(Key.left)
    keyboard.release(Key.shift)
    

    选项 3:

    keyboard.press(Key.shift.value)
    keyboard.press(Key.left.value)
    keyboard.release(Key.left.value)
    keyboard.press(Key.left.value)
    keyboard.release(Key.left.value)
    keyboard.release(Key.shift.value)
    

    这是在我的机器上运行的视频证明:)

    【讨论】:

    • 不工作。这两者有什么区别?我认为根本没有区别。
    • 根据文档:“只会设置通用修饰符;当按下 Key.shift_l、Key.shift_r 或 Key.shift 时,只会出现 Key.shift。”所以我的想法是 Controller 看不到 Key.shift_l 状态,而我使用了通用 Key.shift 。虽然也没有工作......
    • 一个有趣的行为是,如果你在按下 shift 键时输入一些东西(keyboard.type('abc')with 语句中),它会变成大写字母。所以我不明白为什么选择不起作用。
    • 查看这个有趣的答案:stackoverflow.com/questions/41743087/… 也许它会有所帮助?
    • 感谢您提供链接和更新答案,但不幸的是,上述选项均无效。他们只是将光标向左移动。我也尝试过带值的 shift 和不带 value 选项的左键,但仍然无法正常工作。
    【解决方案2】:

    我刚刚玩弄了 pynput 和 pyautogui,最后找到了一个使用 pynput 的组合,可以完成这个 shift 热键功能。我在代码中使用 page_down 而不是箭头键,但我确认两者都有效。出于某种原因,如果同时按下 shift 键和 shift_r 键,则可以通过移动光标来突出显示文本。

    设置:

    from pynput.keyboard import Key, Controller
    
    keyboard = Controller()
    

    代码:

    keyboard.press(Key.shift)
    keyboard.press(Key.shift_r)
    keyboard.press(Key.page_down)  # or keyboard.press(Key.left)
    keyboard.release(Key.page_down)  # or keyboard.release(Key.left)
    keyboard.release(Key.shift_r)
    keyboard.release(Key.shift)
    

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 2013-03-15
      • 2021-08-26
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多