使用虚拟ListCtrl复制和粘贴wxpython中的行

使用虚拟ListCtrl复制和粘贴wxpython中的行,python,events,wxpython,copy-paste,listctrl,Python,Events,Wxpython,Copy Paste,Listctrl,我在wxpython中使用虚拟ListCtrl。我试图从列表中选择几行,然后将行值复制/粘贴到文本文件或电子表格中。 如何将所选行复制到剪贴板(使用CTRL-C)?我应该绑定哪个事件? 谢谢 查看列表控件的wxPython演示,我认为您必须执行以下操作: index = self.list.GetFirstSelected() value = " %s: %s\n" % (self.list.GetItemText(index), self.getColumnText(index, 1

我在wxpython中使用虚拟ListCtrl。我试图从列表中选择几行,然后将行值复制/粘贴到文本文件或电子表格中。 如何将所选行复制到剪贴板(使用CTRL-C)?我应该绑定哪个事件?
谢谢

查看列表控件的wxPython演示,我认为您必须执行以下操作:

index = self.list.GetFirstSelected()
value = "      %s: %s\n" % (self.list.GetItemText(index), self.getColumnText(index, 1)))
如果要使用CTRL-C,则需要使用AcceleratorTable,这意味着您需要绑定到EVT_菜单,并将我提到的代码放入该处理程序中。以下是关于wx中Accerators的教程:


另一方面,我几乎总是使用ObjectListView而不是ListCtrl,因为它为每一行提供了一个对象模型,我发现这比使用行和列索引更容易访问。这需要稍微不同的方法和思维方式,但我认为这是值得的:

迈克关于加速器的链接真的很有帮助。除此之外,我还使用pyperclip.copy()完成了复制操作。 这样,选定的内容将复制到剪贴板;它可以粘贴到任何文件

希望它能帮助别人

import pyperclip 

def onKeyCombo(self, event):

    listSelectedLines =[]
    index = self.list.GetFirstSelected()  

    while index is not -1:
        listSelectedLines.append(self.list.GetItem(index, 1).GetText())
        index = self.list.GetNextSelected(index)             

    pyperclip.copy(''.join(listSelectedLines))

谢谢你,迈克!非常感谢:-)