用Python创建复制粘贴函数

2024-05-15 00:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找使用Python向程序添加函数的解决方案。我要复制和粘贴选定的数据(用鼠标选定)。

示例:

  1. 当我选择Hello时,使用CTRL-C从“Hello everybody”语句中复制“Hello”。
  2. 使用CTRL-C复制选定数组的一部分

我的主要问题是如何使用选定的数据。但现在我可以复制代码中定义的字符串(这里是“tt”):

clipboard.OpenClipboard()
clipboard.EmptyClipboard()
clipboard.SetClipboardText('tt')
clipboard.CloseClipboard()

我尝试了在网上和这个网站上找到的几个代码,但没有一个解决我的问题。


Tags: 数据函数代码程序示例hello粘贴数组
2条回答

如果有人感兴趣,最后的代码是:

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)

您不需要调用clipboard.SetClipboardText()。当程序支持剪贴板时,则Ctrl+C会将当前选定的文本复制到剪贴板中。你不需要做任何事就可以做到这一点。

如果您的问题是“如何从程序外部触发Ctrl+C将当前选定的文本复制到剪贴板”,那么答案是:通常,您不能。出于安全原因,大多数程序不会响应其他程序发送的人工密钥事件。

第二个错误完全是另一个错误。类CopyEvent没有属性list,因此Python无法调用其中的方法。

相关问题 更多 >

    热门问题