我使用在wxPython一个虚拟的ListCtrl。 我想从列表中选择几行,然后复制/粘贴行值到一个文本文件,或者可能是电子表格。 我将如何复制选定行到剪贴板(使用CTRL-C)? 我应该绑定哪些事件? 谢谢!
Answer 1:
纵观wxPython的演示的列表控件,我想你可以做一些类似如下:
index = self.list.GetFirstSelected()
value = " %s: %s\n" % (self.list.GetItemText(index), self.getColumnText(index, 1)))
你会需要的,如果你想使用CTRL-C,这意味着你会绑定到EVT_MENU,并把我在处理中提到的代码使用AcceleratorTable。 下面是在WX上Accerators教程: http://www.blog.pythonlibrary.org/2010/12/02/wxpython-keyboard-shortcuts-accelerators/
在另一方面,我几乎总是使用ObjectListView,而不是作为的ListCtrl它给了我,我觉得比用行和列的索引更容易获得大量的每一行的对象模型。 它需要一个稍微不同的方式和心态,但我认为这是值得的: http://www.blog.pythonlibrary.org/2009/12/23/wxpython-using-objectlistview-instead-of-a-listctrl/
Answer 2:
迈克对加速器的联系是非常有帮助。 伴随着这一点,我用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))
文章来源: Copy and paste rows in wxpython using a virtual ListCtrl