wxpython 事件处理的参数传递

wxpython 事件处理的参数传递,第1张

问题出在事件的对象是按钮,不是frame,当然取不到。。。

两个办法吧,第一个把你的mol_frame改成成员变量,self.mol_frame第二个办法把mol_frame写成一个类,独立来调用。

wxDirPickerCtrl的evt处理函数中,给wxListCtrl控件发一个事件消息,在wxListCtrl的对应事件处理函数中去响应,然后添加选择的目录路径到list中去,看起来才是结构比较合理的。所以压根没有想到这么去做。

我刚才试了试感觉也没有显示出来,部分处理贴出来,请指点一下。

wxFormBuilder生成的UI代码,部分节选:

class FsFrameBase ( wx.Frame ):

def __init__( self, parent ):

。。。 。。。

self.m_listCtrl_DirList = wx.ListCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_NO_HEADER|wx.LC_REPORT )

。。。 。。。

self.m_dirPicker_DirChoise = wx.DirPickerCtrl( self, wx.ID_ANY, wx.EmptyString, u"Select a folder", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DIR_MUST_EXIST )

。。。 。。。

# Connect Events

self.m_dirPicker_DirChoise.Bind( wx.EVT_DIRPICKER_CHANGED, self.OnDirSelectButton )

。。。。。。

# Virtual event handlers, overide them in your derived class

。。。。。。

def OnDirSelectButton( self, event ):

event.Skip()

。。。。。。

自己实现的frame代码,部分节选:

class FsFrame(fs_ui.FsFrameBase):

。。。 。。。

def DrawDirList(self):

for idx, val in g_FsDirDb.GetData():

DbgPrint('==================') # 打印我从数据库中的已添加目录信息

DbgPrint('DrawDirList dbg:')

DbgPrint(' idx[%d], val[%s]' % (idx, val))

DbgPrint('==================')

rowidx = self.m_listCtrl_DirList.InsertStringItem(sys.maxint, val)

DbgPrint('Insert result: %d' % rowidx) # 打印添加结果动作

。。。 。。。

def OnDirSelectButton(self, evt):

g_FsDirDb.AddDir(evt.GetEventObject().GetPath())

DbgPrint('------------------') # 打印browser添加目录后,数据库中的目录信息dump

DbgPrint('Debuging: ')

g_FsDirDb.Debug()

DbgPrint('------------------')

self.DrawDirList() # 直接调用封装的listctrl.insertItem函数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11412597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存