我正在寻找一种使用Python向程序添加函数的解决方案。我想复制并粘贴所选数据(用鼠标选择)。
示例:
我的主要问题是如何使用所选数据。但现在我只能复制代码中定义的字符串(这里是“tt”):
clipboard.OpenClipboard()
clipboard.EmptyClipboard()
clipboard.SetClipboardText('tt')
clipboard.CloseClipboard()
我尝试了在互联网和本网站上找到的几个代码,但没有一个代码解决了我的问题。
答案 0 :(得分:2)
您不需要致电clipboard.SetClipboardText()
。当程序支持剪贴板时, Ctrl + C 会将当前选定的文本复制到剪贴板中。要实现这一目标,您无需做任何事情。
如果您的问题是"如何从程序外部触发 Ctrl + C 将当前选定的文本复制到剪贴板",答案是:通常情况下,你不能。出于安全原因,大多数程序都不会响应其他程序发送的人为键事件。
第二个错误完全是另一回事。您的班级CopyEvent
没有属性list
,因此Python无法调用其中的方法。
答案 1 :(得分:0)
如果有人有兴趣,最后的代码:
from eventbase import EventBase
import win32clipboard as clipboard
import os
import wx
class CopyEvent(EventBase):
TYPE = wx.NewEventType()
ID = wx.NewId()
BINDER = wx.PyEventBinder(TYPE, 1)
SHORTCUT_MODIFIER = wx.ACCEL_CTRL
SHORTCUT_KEY = ord('C')
def __init__(self, variable=None):
EventBase.__init__(self)
self._variable = variable
def execute(self, viewmodel, parent):
clipboard.OpenClipboard()
clipboard.EmptyClipboard()
text = self._convert_variable_to_text(self._variable)
clipboard.SetClipboardText(text)
clipboard.CloseClipboard()
self.logger.info("Copying variable to clipboard")
def _convert_variable_to_text(self, variable) :
lines = []
lines.append("\t".join(variable.column_names))
for row_nbr in variable.row_numbers:
lines.append("\t".join([repr(i) for i in variable.get_row_as_tuple(row_nbr)]))
return os.linesep.join(lines)