wxPython中listctrl的双击事件问题。

zengna_com 2010-10-21 09:42:03
wxPython中listctrl的双击事件问题。

为什么找不到鼠标双击事件啊?

...全文
657 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
a153141866 2010-12-07
  • 打赏
  • 举报
回复
现在是没有单击事件的,你要写一个自定义事件。
xxshiny 2010-11-11
  • 打赏
  • 举报
回复
EVT_LIST_BEGIN_DRAG
当用户使用鼠标左按键开始一个拖动操作时,触发该事件

EVT_LIST_BEGIN_RDRAG
当用户使用鼠标右按键开始一个拖动操作时,触发该事件

EVT_LIST_Delete_ALL_ITEMS
调用列表的 DeleteAll()将触发该事件

EVT_LIST_Delete_ITEM
调用列表的 Delete()将触发该事件

EVT_LIST_Insert_ITEM
当一个项目被插入到列表中时,触发该事件

EVT_LIST_ITEM_ACTIVATED
用户通过在已选择的项目上按下回车或双击来激活一个项目时

EVT_LIST_ITEM_DESelectED
当项目被取消选择时触发该事件

EVT_LIST_ITEM_FOCUSED
当项目的焦点变化时触发该事件

EVT_LIST_ITEM_MIDDLE_CLICK
当在列表上敲击了鼠标的中间按钮时触发该事件

EVT_LIST_ITEM_RIGHT_CLICK
当在列表上敲击了鼠标的右按钮时触发该事件

EVT_LIST_ITEM_SelectED
当通过敲击鼠标左按钮来选择一个项目时,触发该事件

EVT_LIST_ITEM_KEY_DOWN
在列表控件已经获得了焦点时,一个按键被按下将触发该事件


xxshiny 2010-11-11
  • 打赏
  • 举报
回复 1
self.list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDclick)
这个就是双击事件啊。。我无语了。。什么都不用改,前面的几条我发的都删掉吧。
xxshiny 2010-11-11
  • 打赏
  • 举报
回复
self.list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnLeftClick)
self.list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDclick)

换成
self.list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDclick)
self.list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnLeftClick)
zanpen2000 2010-11-11
  • 打赏
  • 举报
回复
wx.EVT_LIST_ITEM_ACTIVATED 我当初也找半天
xxshiny 2010-11-10
  • 打赏
  • 举报
回复
def OnLeftClick(self,event):
wx.MessageBox("Single Cilcked","Single cilck",wx.YES_NO)
event.Skip()

xxshiny 2010-11-10
  • 打赏
  • 举报
回复
event.skip()
zengna_com 2010-11-08
  • 打赏
  • 举报
回复
继续求助!!
jy02160230 2010-10-27
  • 打赏
  • 举报
回复
我回复了 但我还是个新手
codesnail 2010-10-27
  • 打赏
  • 举报
回复
个人感觉搞界面还得用ms的。。。。
不然总有别扭的感觉,就是要实现库不直接支持的功能会非常郁闷。。。。
angel_su 2010-10-26
  • 打赏
  • 举报
回复
或者试试CallLater让双击工作先行,然后跑单击的工作判断无双击才作不然跳出,譬如按你的例子改下:

def OnLeftClick(self,event):
wx.CallLater(300, self.OnSelected)

def OnSelected(self):
if self.IsActive(): #判断方式不一,按双击会弹出对话窗口的话...
wx.MessageBox("Single Cilcked","Single cilck",wx.YES_NO)
zengna_com 2010-10-26
  • 打赏
  • 举报
回复
这就跟可执行文件一样,单击选中,双击运行
angel_su 2010-10-26
  • 打赏
  • 举报
回复
试了下双击在一个已经选定的条目没问题。双击在一个未选定的,先响应单击事件,然后估计双击事件送到MessageBox上变成没效果...强扭的瓜不甜,试试单击就别作弹窗口的功能,改点右键弹窗口也是很自然嘛,又不冲突...
zengna_com 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 angel_su 的回复:]
双击会先响应EVT_LIST_ITEM_SELECTED再响应EVT_LIST_ITEM_ACTIVATED,可能是wx.MessageBox阻塞超时就没有后面事件,这样管理比较合理的样子。随便换成print一段文字看看...
[/Quote]

你说的我知道,现在我要做的样子是:单击弹出一个对话框,双击时弹出另外一个对话框,这个两个对话框的响应不会出现单击覆盖双击的。不要看我的代码,我的代码有问题,看看有没有什么方法实现。
angel_su 2010-10-25
  • 打赏
  • 举报
回复
双击会先响应EVT_LIST_ITEM_SELECTED再响应EVT_LIST_ITEM_ACTIVATED,可能是wx.MessageBox阻塞超时就没有后面事件,这样管理比较合理的样子。随便换成print一段文字看看...
zengna_com 2010-10-25
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~~··
wlznj 2010-10-21
  • 打赏
  • 举报
回复
我是新手,我准备用Python的IDE来学习,但是我没法设置它的快捷方式,希望大家指点下
zengna_com 2010-10-21
  • 打赏
  • 举报
回复
import wx

class ListCtrlFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1,"ListCtrl",size=(200,200))
self.list = wx.ListCtrl(self, -1, style=wx.LC_LIST|wx.LC_EDIT_LABELS)
for x in range(10):
self.list.InsertStringItem(x,"This is item %02d" % x)


self.list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnLeftClick)
self.list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDclick)



def OnLeftClick(self,event):
wx.MessageBox("Single Cilcked","Single cilck",wx.YES_NO)

def OnDclick(self,event):
wx.MessageBox("Double Cilcked","Double cilck",wx.YES_NO)


app = wx.PySimpleApp()
frame = ListCtrlFrame()
frame.Show()
app.MainLoop()

为什么单击事件覆盖了双击事件。双击事件得不到响应啊?
大家有什么好办法吗?
还是我根本就用错了?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧