wxpython實現檔案拖拽

2021-07-10 02:34:14 字數 1799 閱讀 1551

我想讓wx.grid裡面的單元格能夠支援檔案拖拽,實現起來挺簡單的,共分3步:

1、建立乙個wx.filedroptarget子類的物件,並把要支援拖拽的控制項傳給它的建構函式,此處是grid

2、呼叫grid的setdroptarget函式,並將第1步建立的wx.filedroptarget子類物件傳給它

3、實現第1步建立的wx.filedroptarget的子類,並覆蓋ondropfiles函式

貼出**如下:

import

wximport

wx.grid

import

logging

importos#

第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

def__init__(self, redirect = false, filename =none):

__init__

(self, redirect, filename)

defoninit(self):

self.frame =myframe()

self.frame.show()

self.frame.center()

return

true

delphi 實現拖拽開啟檔案

步驟如下,delphi 7測試通過 1 在uses 中增加 shellapi 2 增加拖拽的訊息處理函式 宣告 protected procedure wmdropfiles var msg tmessage message wm dropfiles 實現 procedure tform1.wmdr...

wxPython實現分隔視窗

1 分割視窗 分隔視窗 wx.splitterwindow 就是將視窗分成兩部分,即左右或上下兩部分,如下圖所示視窗,整體上分為左右兩個視窗,右視窗又分為上下兩視窗,兩個視窗之間的分隔線是可以拖動的,稱為 窗框 sash wx.splitterwindow中乙個常用的方法有 如下圖為乙個分割視窗,採...

接受檔案拖拽視窗的實現

長期以來,我似乎都沒有對知識進行總結,寄希望於部落格吧。早上閒著沒事,想起來一篇關於拖拽的文章,第一次見到還是借助於google大俠,搜了n久才發現該文章,如今已經滿地都是中文版本了。本人堅持自力更生的原則,自己做一遍吧,不想只抄襲人家的內容,然後儲存一下就再也不看了。想把知識運用起來。廢話少說,入...