【问题标题】:wx.ListCtrl and column header tooltipswx.ListCtrl 和列标题工具提示
【发布时间】:2010-05-03 14:00:16
【问题描述】:

我正在寻找一种在用户将鼠标悬停在 将鼠标放在 wx.ListCtrl 的列标题上,这可能吗?
我尝试绑定wx.EVT_MOTION,但看起来它只适用于 列出项目,而不是标题.. 我做错了吗?

提前致谢!

(Xubuntu 9.04 上的 wxPython 2.8.9.1)

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    我认为目前这是不可能的,EVT_MOTION 仅在您位于列表本身时通过 GetPosition() 获取坐标,当您将鼠标悬停在列上时,这些列似乎不会注册坐标。

    我能够在 wx.lib.agw.UltimateListCtrl 中找到这个link,您可能想在 wxpython 邮件列表中询问是否/何时发布此功能.

    【讨论】:

    • 在上面的链接中搜索 def SetColumnToolTip(self, col, tip) ;)
    • 仅供参考,我查看了最新版本的 agw 模块,似乎已经添加了 SetColumnToolTip 功能。 :D 你可以下载它here
    • 作为参考,AGW 从 2.8.9.2 开始包含在 wxPython 中,而 UltimateListCtrl 从 2.8.11.0 开始存在。 SetColumnToolTip 出现在 2.8.12.0
    【解决方案2】:

    我找不到对列标题执行此操作的方法,但这适用于单个单元格:

        self.lc = wx.ListCtrl(self, style=wx.LC_REPORT)
        # ...
        self.lc.Bind(wx.EVT_MOTION, self.OnMouseMotion)
    
    def OnMouseMotion(self, evt):
        pos = self.lc.ScreenToClient(wx.GetMousePosition())
        item_index, flag = self.lc.HitTest(pos)
        tip = self.lc.GetToolTip()
    
        if flag == wx.LIST_HITTEST_ONITEMLABEL:
            tip.SetTip('Some information about ' + self.lc.GetItemText(item_index))
        else:
            tip.SetTip('')
    
        evt.Skip()
    

    当我将鼠标悬停在列标题上时,它不会发送事件,至少在我的 PC (Win 10) 上不会。

    我在这里找到了这个答案:https://coderedirect.com/questions/378870/how-to-tweak-my-tooltips-in-wxpython

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多