listctrl中的cell如何支持被复制

时间:2022-01-24 20:51:31

为了方便测试data pipeline, 使用wxpython开发了一个小工具,用来显示csv文档中的特定列,及数据库中的指定值。

显示数据的contrl选择了listctrl。但这里有个问题,显示的数据,不能复制到clipboard。尤其是复制单个item的数据,非常实用。

解决之路:

1 google: python listctrl can be copied

2 看了很多,没找到合适的。后面在下面这个,找到一个变通的方法

http://www.blog.pythonlibrary.org/2011/01/04/wxpython-wx-listctrl-tips-and-tricks/

How to make the ListCtrl cells editable in place

 import wx.lib.mixins.listctrl as listmix

 class EditableListCtrl(wx.ListCtrl, listmix.TextEditMixin):
''' TextEditMixin allows any column to be edited. ''' def __init__(self, parent, ID=wx.ID_ANY, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0):
"""Constructor"""
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
listmix.TextEditMixin.__init__(self)
         self.listctrl1=EditableListCtrl(panel,wx.ID_ANY,pos=(20,80),size=(1200,550),style=wx.LC_REPORT|wx.LC_HRULES|wx.LC_VRULES)

执行后,在listctrl中双击某个cell,使其处于可编辑状态,然后ctrl+c进行复制。

这个方法其实是个取巧的方法,有个最大的缺点,在cell处于可编辑状态后,数据容易因为误操作被修改。

听说grid控件,自带可被复制功能,同时数据又不会被修改,后面可以学习一下该控件的使用。