我想讓wx.grid裡面的單元格能夠支援檔案拖拽,實現起來挺簡單的,共分3步:
1、建立乙個wx.filedroptarget子類的物件,並把要支援拖拽的控制項傳給它的建構函式,此處是grid
2、呼叫grid的setdroptarget函式,並將第1步建立的wx.filedroptarget子類物件傳給它
3、實現第1步建立的wx.filedroptarget的子類,並覆蓋ondropfiles函式
貼出**如下:
importwximport
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久才發現該文章,如今已經滿地都是中文版本了。本人堅持自力更生的原則,自己做一遍吧,不想只抄襲人家的內容,然後儲存一下就再也不看了。想把知識運用起來。廢話少說,入...