【问题标题】:Catch a click on item in ListCtrl with modifiers使用修饰符点击 ListCtrl 中的项目
【发布时间】:2017-07-27 08:59:31
【问题描述】:

我有一个具有单选模式的虚拟 ListCtrl。现在我想自定义列表项上的点击、shift-clicks 和 control-clicks。为此,我需要在 wx.EVT_LIST_ITEM_SELECTED 的事件处理程序期间使用 GetModifiers()。我该怎么做?

我尝试了以下方法:

1) 在我的自定义 ListCtrl 的 init() 期间实例化 self.keyboard = wx.KeyboardState()。然后在事件处理过程中调用 self.keyboard.GetModifiers()。

2) 在事件处理期间实例化 KeyboardState 类。

为了测试它是否有效,我只打印所有捕获的修饰符。但它始终为 0(即 MOD_NONE)。

我还尝试使用 wx.EVT_LEFT_DOWN 和 wx.EVT_LEFT_UP 而不是 wx.EVT_LIST_ITEM_SELECTED。前者有同样的问题,后者甚至没有被触发,当我点击一个列表项时。

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    这会将鼠标和项目选择事件分配给同一事物,然后使用event.Skip() 确保我们都能看到两者。
    也许这可能会让您对如何进步有所了解。
    与 Shift、Ctrl 等组合使用,mods 会根据按下的内容为您提供不同的数字。

    import wx
    
    class Myframe(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None)
            pan = wx.Panel(self)
            self.listC = wx.ListCtrl(pan, style=wx.LC_REPORT)
            self.listC.InsertColumn(0, 'Column1', width=50)
            self.listC.InsertColumn(1, 'Column2', width=50)
            self.listC.InsertColumn(2, 'Column3', width=50)
            self.listC.Bind(wx.EVT_LEFT_DOWN, self.ListClick)
            self.listC.Bind(wx.EVT_LIST_ITEM_SELECTED, self.ListSelected)
            self.listC.InsertStringItem(0,"Item1")
            self.listC.SetStringItem(0, 1,"Col 1 Item")
            self.listC.SetStringItem(0, 2,"Col 2 Item")
            self.listC.InsertStringItem(1,"Item2")
            self.listC.SetStringItem(1, 1,"Col 1 Item")
            self.listC.SetStringItem(1, 2,"Col 2 Item")
    
        def ListClick(self, event):
            mods = event.GetModifiers()
            print mods
            event.Skip()
    
        def ListSelected(self, event):
            print "selected"
    
    if __name__ == "__main__":
        App = wx.App()
        Myframe().Show()
        App.MainLoop()
    

    【讨论】:

    • 感谢您的澄清。
    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2011-07-30
    相关资源
    最近更新 更多