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 ...
随机推荐
- BZOJ 3433 [Usaco2014 Jan]Recording the Moolympics:贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3433 题意: 给出n个区间[a,b). 有两个记录器,每个记录器中存放的区间不能重叠. 求 ...
- 循环递归+返回值(TreeView示例)
示例:获取TreeView的所有Node,保存到List<TreeNode>,封装到通用工具类: 方法一:使用static方法.属性---调用前清空static类型的List public ...
- List 中去除 null 方法讨论
先看下面的程序段: public static void main(String[] args) { List<Integer> arrays = new ArrayList<Int ...
- JavaWEB - 静态include指令、动态Include指令
(一)使用静态include指令 <%@ page language="java" contentType="text/html; charset=gb2312&q ...
- bzoj 2300: [HAOI2011]防线修建 凸包
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=2300 题解 这道题让我们维护一个支持动态删除点的上凸壳 并且告诉了我们三个一定不会被删除 ...
- Hive安装配置要点
官网下载安装包: 在Profile下面定义HIVE_HOME以及HADOOP_HOME,然后在PATH下面添加HOME/bin目录,用于在命令行直接敲beeline,hive即可执行命令: 需要在ha ...
- HDU5438:Ponds(拓扑排序)
Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- 2008上交:Day of Week
题目描述: We now use the Gregorian style of dating in Russia. The leap years are years with number divis ...
- 事务之五:Spring @Transactional工作原理
本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的. JPA(Java Persistence API--java持久层)和事务管理 很重要的一点是JPA本身 ...
- Nuget:目录
ylbtech-Nuget:目录 1.返回顶部 1. https://www.nuget.org 2. https://docs.microsoft.com/zh-cn/nuget/ 3. https ...