wxpython grid(如何在Grid中响应鼠标移动事件)

本文目录
如何在Grid中响应鼠标移动事件
最近写一个小软件,GUI是用wxPython做的,有一个功能需要捕获鼠标在Grid控件上的移动事件。我先在Boa Constructor中
拖出一个Grid原型来做测试,发现很容易,只要grid.Bind(wx.EVT_MOTION, self.OnGridMotion) 就可以了,但是
移植到软件中去之后,死活无法响应,百思不得其解。
不断的尝试之下,总算发现了当Grid还没有创建网格的时候(也就是还没有CreateGrid或者SetTable的时候),是可以直接响应wx.EVT_MOTION的,但是一旦创建了网格之后就不行了。我猜测(没有Python的源码,只有C++的,懒得看了)应该是由于wxPython那不同寻常的设计方法,网格的窗口也能单独管理,由于网格挡住了Grid,所以抢先于Grid接受到wx.EVT_MOTION,而wx.EVT_MOTION不属于CommandEvent,因此不能传递给Grid。
问题找到了,我相信一定可以解决,只是苦于wxPython的资料太少。在网上寻觅2个小时后突然发现了一篇文章之中用到GetGridColLabelWindow 这个函数。眼前一亮,能得到Window不就可以操作了嘛。赶紧查wxPython API,果然有以下4个函数:
GetGridColLabelWindow(self)
GetGridCornerLabelWindow(self)
GetGridRowLabelWindow(self)
GetGridWindow(self)
其中我只要用最后一个,于是我重新绑定一下:
gridWin = self.grid1.GetGridWindow()
gridWin.Bind(wx.EVT_MOTION, self.OnGrid1Motion)
测试,OK!
wxPython + python的开发真是很爽,但没有文档也真的很头痛。希望这篇文章能为遇到相同情况的人一点帮助。
在wxPython的grid控件中的一个小问题
可以定位到列上,通过wx.grid.EVT_GRID_LABEL_LEFT_CLICK这个事件
在通过列号来获取列名
再通过列名。。。。你想干啥就干啥咯
求助wxpython中grid的问题
fileTname.SetInsertionPointEnd(q)这个用法是不对的。 SetInsertionPointEnd的作用是得到或设置插入点的位置,而不是插入数值。 所以程序会报错。 修改为: def si(event): global q q += 3 fileTname.SetInsertionPointEnd() fileTname.WriteT...
wxpython中grid网格能加入rich3样式吗
话说TE_RICH2这个是TextCtrl的Style,请注意前面的TE_前缀。 Grid没有这个style,不过你可以试试自定义一下Grid的单元格,具体情况请参考wxPython In Action

更多文章:
jfreechart 极坐标设置线条颜色(各位,怎样修改 matlab 中极坐标生成的图像线条的宽度求程序指导! 谢谢了!!!)
2025年8月9日 12:00
appear后面可以加名词吗(高考英语备考之 appear的用法)
2025年9月17日 03:30
django框架安装过程(京东云擎怎么搭建django 框架)
2025年7月24日 02:00
index加match函数出错(excel中INDEX和MATCH函数出现的问题)
2026年1月3日 23:00
routes插件(模拟火车2019机车插件和线路插件安装在哪里怎么激活求大神解答!!)
2025年7月11日 16:45
手机java运行库下载(三星C3300K手机下载JAVA游戏详细方法)
2026年1月12日 09:00
雅马哈音响portable(为什么存储卡里的歌在可插卡蓝牙音响上有些能放,有些不能放)
2026年8月5日 16:15
易语言源码忘记保存奔溃怎么找回(易语言源码丢失,用什么恢复软件恢复后可以用)
2025年12月9日 05:45














