Ivo*_*pse 7 python wxpython tooltip
我试图添加一个工具提示来显示截断的ObjectListView的完整内容,直到它发现它具有内置的这样的功能:

我试图使使用wx.TipWindow,wx.PopupWindow和SuperToolTip我自己的工具提示,但没有人看作"天然",因为这一个.

虽然我知道这篇wiki文章据称可以为截断的wx.Listrctrls启用工具提示,但我并不真正理解如何让它工作.我也希望它只在某些内容被截断时起作用,而我希望能够用它来显示更多信息.
我猜SuperToolTip很接近,但当你删除'header'时,它会在顶部留下空白空间,而不是将文本居中在工具提示的中间并使其适合.
我试着查看ObjectListView,SuperToolTip和wxpython的源代码来尝试查找工具提示是如何创建的,但我无法找到实现它的低级部分.
那么我该如何调整工具提示,使它们看起来更像原生工具提示呢?
生成我当前弹出窗口的代码是:
text = "I'm a popup"
class PopUp(wx.TipWindow):
def __init__(self, parent, text):
wx.TipWindow.__init__(self, parent, text)
class PopUp2(wx.PopupWindow):
def __init__(self, parent, text):
wx.PopupWindow.__init__(self, parent)
st = wx.StaticText(self, parent, text)
# Import `from agw import supertooltip as STT`
popup3 = STT.SuperToolTip(text)
Run Code Online (Sandbox Code Playgroud)
即使您无法从头开始创建并弹出原生工具提示,您仍然可以在创建时为整个 ListCtrl 分配一个工具提示,然后根据鼠标指针下的项目将文本更改为您想要的任何内容。它不像 ObjectListView 那样将工具提示整齐地放置在列表项上,但我认为它仍然可以满足您的要求。
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |