与 Python 中的选定文本进行交互
Interacting with selected text in Python
我想创建一个简单的 Python 应用程序,它可以与当前选定的文本交互,并在用户按下键盘快捷键时用它做一些事情。显而易见的方法是使用 pyautogui.hotkey("ctrl", "c")
将文本复制到剪贴板,然后与之交互。问题是,此方法会覆盖用户当前在其剪贴板中的任何内容。
我能想到的唯一解决方法是:
#make a backup of current clipboard contents
tmpClipboard = pyperclip.paste()
#copy selected text and store it
pyautogui.hotkey("ctrl", "c")
selectedText = pyperclip.paste()
#copy old clipboard contents back inside
pyperclip.copy(tmpClipboard)
#process selected text
doStuff(selectedText)
什么是更好的处理方式(因为我不确定当用户在剪贴板中有图片而不是纯文本时这会执行得如何)?
您可以尝试让用户定义交互热键。我不知道您的最终应用程序,因此这取决于您想要实现的用户体验。例如,如果用户是一名工程师,我认为他更愿意被提示有关默认热键的提示,并根据需要进行更改。
关于抓取所选文本 - 这取决于您的 GUI 绑定 - 您使用的是 Tk
、Qt
等吗?
例如,Qt
有一个 QTextCursor
,您可以使用它来获取有关光标和用户选择的信息,然后在不使用整个剪贴板技巧的情况下抓取文本。这样您也可以确保获得所需的数据。
至于图像等:如果您仍然选择使用剪贴板,则可以断言数据类型。然而,它确实有大量的可能值,而且看起来非常繁琐且效率低下。
祝你好运!
我想创建一个简单的 Python 应用程序,它可以与当前选定的文本交互,并在用户按下键盘快捷键时用它做一些事情。显而易见的方法是使用 pyautogui.hotkey("ctrl", "c")
将文本复制到剪贴板,然后与之交互。问题是,此方法会覆盖用户当前在其剪贴板中的任何内容。
我能想到的唯一解决方法是:
#make a backup of current clipboard contents
tmpClipboard = pyperclip.paste()
#copy selected text and store it
pyautogui.hotkey("ctrl", "c")
selectedText = pyperclip.paste()
#copy old clipboard contents back inside
pyperclip.copy(tmpClipboard)
#process selected text
doStuff(selectedText)
什么是更好的处理方式(因为我不确定当用户在剪贴板中有图片而不是纯文本时这会执行得如何)?
您可以尝试让用户定义交互热键。我不知道您的最终应用程序,因此这取决于您想要实现的用户体验。例如,如果用户是一名工程师,我认为他更愿意被提示有关默认热键的提示,并根据需要进行更改。
关于抓取所选文本 - 这取决于您的 GUI 绑定 - 您使用的是 Tk
、Qt
等吗?
例如,Qt
有一个 QTextCursor
,您可以使用它来获取有关光标和用户选择的信息,然后在不使用整个剪贴板技巧的情况下抓取文本。这样您也可以确保获得所需的数据。
至于图像等:如果您仍然选择使用剪贴板,则可以断言数据类型。然而,它确实有大量的可能值,而且看起来非常繁琐且效率低下。
祝你好运!