如何删除 wxpython 中的工具提示?
How to remove a tooltip in wxpython?
如何在 wxpython 中删除工具提示?我知道它们有一个到期时间,之后它们就会消失,但我正在努力在文档中找到有关有目的地删除它们的任何内容。
在我的特殊情况下,我有一个 wx.grid,它在 wx.EVT_MOTION 上调用一个函数,该函数获取网格中事件的坐标,找出它是哪个单元格(a la grid.CalcUnscrolledPosition() 和 grid.XYToCell()) 然后,如果它是一个特定的单元格,则创建一个工具提示。现在,在已经有工具提示的情况下,如果光标悬停在不需要工具提示的单元格上方,我想将其删除。我很难在文档中找到任何内容。 This link 具有 ToolTip.Enable() 函数,但没有任何结果。文档似乎暗示它应该 enable/disable 全局工具提示,但没有任何反应。
有什么想法吗?
仅供参考,Win7,Python 2.7.9,wx 3.0.2.0
编辑
相关代码的粗略结构:
self.grid.GetGridWindow().Bind(wx.EVT_MOTION, self.onMouseOver)
...
def onMouseOver(self, event):
#get current grid cell
x, y = self.grid.CalcUnscrolledPosition(event.GetX(), event.GetY())
coords = self.grid.XYToCell(x,y)
row = coords[0]
col = coords[1]
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
self.grid.SetToolTip(None)
event.Skip()
终于,在与该死的东西搏斗了一个世纪之后,结果和想法也简单得令人难以置信SetToolTip(None)
见下文:
import wx
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Toggle")
self.panel = wx.Panel(self, wx.ID_ANY)
self.dummy = wx.StaticText(self.panel, -1, "")
self.cb1 = wx.CheckBox(self.panel, -1,"Choice 1", pos=(10,10))
self.cb2 = wx.CheckBox(self.panel, -1,"Choice 2", pos=(10,40))
self.cb1.Bind(wx.EVT_CHECKBOX, self.onToggle1)
self.cb2.Bind(wx.EVT_CHECKBOX, self.onToggle2)
self.cb1.SetToolTipString(wx.EmptyString)
self.cb2.SetToolTipString(wx.EmptyString)
#----------------------------------------------------------------------
def onToggle1(self, event):
if self.cb1.GetValue() == True:
self.cb1.SetToolTipString("Check Box 1 is Checked")
else:
self.cb1.SetToolTip(None)
def onToggle2(self, event):
if self.cb2.GetValue() == True:
self.cb2.SetToolTipString("Check Box 2 Is Checked")
else:
self.cb2.SetToolTip(None)
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
编辑:
对于您问题中与在网格中使用相关的代码,更改
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
self.grid.SetToolTip(None)
至:
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
event.GetEventObject().SetToolTip(None)
如何在 wxpython 中删除工具提示?我知道它们有一个到期时间,之后它们就会消失,但我正在努力在文档中找到有关有目的地删除它们的任何内容。
在我的特殊情况下,我有一个 wx.grid,它在 wx.EVT_MOTION 上调用一个函数,该函数获取网格中事件的坐标,找出它是哪个单元格(a la grid.CalcUnscrolledPosition() 和 grid.XYToCell()) 然后,如果它是一个特定的单元格,则创建一个工具提示。现在,在已经有工具提示的情况下,如果光标悬停在不需要工具提示的单元格上方,我想将其删除。我很难在文档中找到任何内容。 This link 具有 ToolTip.Enable() 函数,但没有任何结果。文档似乎暗示它应该 enable/disable 全局工具提示,但没有任何反应。
有什么想法吗?
仅供参考,Win7,Python 2.7.9,wx 3.0.2.0
编辑 相关代码的粗略结构:
self.grid.GetGridWindow().Bind(wx.EVT_MOTION, self.onMouseOver)
...
def onMouseOver(self, event):
#get current grid cell
x, y = self.grid.CalcUnscrolledPosition(event.GetX(), event.GetY())
coords = self.grid.XYToCell(x,y)
row = coords[0]
col = coords[1]
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
self.grid.SetToolTip(None)
event.Skip()
终于,在与该死的东西搏斗了一个世纪之后,结果和想法也简单得令人难以置信SetToolTip(None)
见下文:
import wx
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Toggle")
self.panel = wx.Panel(self, wx.ID_ANY)
self.dummy = wx.StaticText(self.panel, -1, "")
self.cb1 = wx.CheckBox(self.panel, -1,"Choice 1", pos=(10,10))
self.cb2 = wx.CheckBox(self.panel, -1,"Choice 2", pos=(10,40))
self.cb1.Bind(wx.EVT_CHECKBOX, self.onToggle1)
self.cb2.Bind(wx.EVT_CHECKBOX, self.onToggle2)
self.cb1.SetToolTipString(wx.EmptyString)
self.cb2.SetToolTipString(wx.EmptyString)
#----------------------------------------------------------------------
def onToggle1(self, event):
if self.cb1.GetValue() == True:
self.cb1.SetToolTipString("Check Box 1 is Checked")
else:
self.cb1.SetToolTip(None)
def onToggle2(self, event):
if self.cb2.GetValue() == True:
self.cb2.SetToolTipString("Check Box 2 Is Checked")
else:
self.cb2.SetToolTip(None)
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
编辑: 对于您问题中与在网格中使用相关的代码,更改
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
self.grid.SetToolTip(None)
至:
if col in relevanCols:
event.GetEventObject().SetToolTipString("Hai")
else:
event.GetEventObject().SetToolTip(None)