wxpython实现文件拖拽
我想让wx.grid里面的单元格能够支持文件拖拽,实现起来挺简单的,共分3步:
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()
wxpython实现文件拖拽的更多相关文章
- html5 文件拖拽上传
本文首先发表在 码蜂笔记 : http://coderbee.net/index.php/web/20130703/266 html5 文件拖拽上传是个老话题了,网上有很多例子,我一开始的代码也是网 ...
- VC实现文件拖拽OnDropFiles
文章转自http://blog.csdn.net/zamaolangzi/article/details/5645284 使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了.那么这种功能是 ...
- C#之winform实现文件拖拽功能
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter ...
- Linux下安装VMware Tools(使虚拟机支持文件拖拽)
如图点击虚拟机找到安装VMware Tools选项,点击后会在虚拟机桌面显示一个光盘,双击进入如下页面: 选择压缩包将其复制放入Home中不带中文的文件夹: 打开终端,输入cd命令进入文件夹,将压缩包 ...
- Web存储及文件拖拽
存储 实现内容的永久保存(localStorage) 保存: localStorage.自定义键名="123"; 获取: //判断是否有内容 if(localStorage.自定义 ...
- html5 drag 文件拖拽浅淡
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# 之文件拖拽和pixturBox缩放与拖拽
文件拖拽: 效果:将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了. 将一个控件的属性AllowDrop设置为true,然后添加DragDrop ...
- php和js实现文件拖拽上传
Dropzone.js实现文件拖拽上传 http://www.sucaihuo.com/php/1399.html demo http://www.sucaihuo.com/jquery/13/139 ...
- C#之winform实现文件拖拽功能【转】
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop.DragEnter ...
随机推荐
- Sqoop- sqoop将mysql数据表导入到hive报错
sqoop将mysql数据表导入到hive报错 [root@ip---- lib]# sqoop import --connect jdbc:mysql://54.223.175.12:3308/gx ...
- DELPHI中四种EXCEL访问技术实现
一.引言 EXCEL在处理中文报表时功能非常强大,EXCEL报表访问也是信息系统开发中的一个重要内容,本文总结以往开发中所用到的几中EXCEL文件访问方法,在实际工作中也得到了很好的验证,本文列举了其 ...
- hibernate 框架搭建
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...
- hihocoder-1284 机会渺茫(水题)
机会渺茫 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在追求一名学数学的女生小Z.小Z其实是想拒绝他的,但是找不到好的说辞,于是提出了这样的要求:对于给定的两 ...
- I.MX6 Android 永不休眠
/************************************************************************* * I.MX6 Android 永不休眠 * 说明 ...
- nodejs 上传图片(服务端输出全部代码)
下面代码,全部都是nodejs端的,不用客户端代码.也就是,选择图片的form表单以及上传完毕预览图片的html,都是由node服务端输出的. 1 启动代码:(node upload.js) var ...
- HUE,大数据的SQL Shell
1. HUE需要安装SASL 发现异常: Could not install table: Error creating table sample_07: Could not start SASL: ...
- Java的native关键字
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...
- HDOJ1114(完全背包)
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const ...
- 第 五 课 golang语言变量
1 变量三种声明: (第一种的var和类型都是多余: 第二种最简洁,但是第二种只能用在函数中,不能是全局变量的声明) 第一种: var v_name v_type(注意顺序) v_nam ...