wxpython实现文件拖拽
2016-02-22 17:36
561 查看
我想让wx.grid里面的单元格能够支持文件拖拽,实现起来挺简单的,共分3步:
1、创建一个wx.FileDropTarget子类的对象,并把要支持拖拽的控件传给它的构造函数,此处是grid
2、调用grid的SetDropTarget函数,并将第1步创建的wx.FileDropTarget子类对象传给它
3、实现第1步创建的wx.FileDropTarget的子类,并覆盖OnDropFiles函数
贴出代码如下:
1、创建一个wx.FileDropTarget子类的对象,并把要支持拖拽的控件传给它的构造函数,此处是grid
2、调用grid的SetDropTarget函数,并将第1步创建的wx.FileDropTarget子类对象传给它
3、实现第1步创建的wx.FileDropTarget的子类,并覆盖OnDropFiles函数
贴出代码如下:
import wx import wx.grid import logging import os # 第3步,实现wx.FileDropTarget子类 class FileDrop(wx.FileDropTarget): def __init__(self, grid): wx.FileDropTarget.__init__(self) self.grid = grid def OnDropFiles(self, x, y, filePath): # 当文件被拖入grid后,会调用此方法 cellCoords = self.grid.XYToCell(x, y) # 根据坐标轴换算被拖入grid网格的行号和列号 filename = os.path.basename(filePath[0]) self.grid.SetCellValue(cellCoords.GetRow(), cellCoords.GetCol(), filename) # 将文件名赋给被拖入的cell class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'MyFrame', size = (640, 480)) panel = wx.Panel(self, -1) vSizer = wx.BoxSizer(wx.VERTICAL) self.grid = wx.grid.Grid(panel, -1) self.grid.CreateGrid(10, 3) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.grid, 1, wx.ALL | wx.EXPAND, 5) vSizer.Add(sizer, 1, wx.ALL | wx.EXPAND) panel.SetSizer(vSizer) self.fileDrop = FileDrop(self.grid) # 第1步,创建FileDrop对象,并把grid传给初始化函数 self.grid.SetDropTarget(self.fileDrop) # 第2步,调用grid的SetDropTarget函数,并把FileDrop对象传给它 class MainApp(wx.App): def __init__(self, redirect = False, filename = None): wx.App.__init__(self, redirect, filename) def OnInit(self): self.frame = MyFrame() self.frame.Show() self.frame.Center() return True app = MainApp() app.MainLoop()
相关文章推荐
- python下一个转码的问题
- Python 字符编码判断
- Python多版本共存之pyenv
- Python中*args 和**kwargs的用法
- libsvm+python配置
- Python2.7 with MySQL Connector/Python Sample(Windows OS)
- Python——运算符重载(1)
- python生成二维码
- python--knn算法练习
- pythonMD5加密
- Python java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory解决办法
- python+mysql抓取百度新闻的标题存到数据库
- python随机验证码函数
- Python
- python操作excel文件的方法
- 【python】编程语言入门经典100例--10
- python高级语法
- python zipfile模块测试
- 【python】编程语言入门经典100例--9
- Python 调用 Stanford Parser 两种方法