为了方便测试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
1 import wx.lib.mixins.listctrl as listmix 2 3 class EditableListCtrl(wx.ListCtrl, listmix.TextEditMixin): 4 ''' TextEditMixin allows any column to be edited. ''' 5 6 def __init__(self, parent, ID=wx.ID_ANY, pos=wx.DefaultPosition, 7 size=wx.DefaultSize, style=0): 8 """Constructor""" 9 wx.ListCtrl.__init__(self, parent, ID, pos, size, style) 10 listmix.TextEditMixin.__init__(self)
1 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控件,自带可被复制功能,同时数据又不会被修改,后面可以学习一下该控件的使用。