如何在 wxpython 中关闭工具提示
How to turn off tooltips in wxpython
我试过:
wx.ToolTip.Enable(False)
wx.ToolTip_Enable(False)
和
wx.ToolTip.Enable(flag=False)
none 条指令被拒绝,但 none 条指令有效
我正在使用 Linux Mint 17
wx.python 2.8.12.1 (gtk2-unicode)
python 2.7
根据wxpythondocs,ToolTip.Enable
好像,
Enable or disable tooltips globally.
Note May not be supported on all platforms (eg. Cocoa).
我假设其中包括您的平台...
相反,您可能需要为 window 本身设置工具提示。对于 window,我看不到 ToolTop_Enable
方法,但是将工具提示设置为空字符串似乎对我有用,
import wx
app = wx.App()
frame = wx.Frame(None, -1, '')
frame.SetToolTip(wx.ToolTip(''))
frame.SetSize(wx.Size(300,250))
frame.Show()
app.MainLoop()
编辑:定义一个子工具提示 class,它可以是 enabled/disabled,默认值基于全局值。
import wx
EnableTooltips = False
class Tooltip(wx.ToolTip):
'''A subclass of wx.ToolTip which can be disabled'''
def __init__(self, string, Enable=EnableTooltips):
self.tooltip_string = string
self.TooltipsEnabled = Enable
wx.ToolTip.__init__(self, string)
self.Enable(Enable)
def Enable(self, x):
if x is True:
self.SetTip(self.tooltip_string)
self.TooltipsEnabled = True
elif x is False:
self.SetTip("")
self.TooltipsEnabled = False
app = wx.App()
frame = wx.Frame(None, -1, '')
tt = Tooltip('test')
frame.SetToolTip(tt)
frame.SetSize(wx.Size(300,250))
frame.Show()
app.MainLoop()
我不确定这是否会动态工作(即一旦您启动 gui,框架工具提示已经设置并且更改它们的值可能不会更新)。
单个工具提示的最终答案非常简单,但却花了很长时间才找到。
使用 SetToolTipString("my Tool Tip")
设置工具提示,但使用 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()
我试过:
wx.ToolTip.Enable(False)
wx.ToolTip_Enable(False)
和
wx.ToolTip.Enable(flag=False)
none 条指令被拒绝,但 none 条指令有效
我正在使用 Linux Mint 17
wx.python 2.8.12.1 (gtk2-unicode)
python 2.7
根据wxpythondocs,ToolTip.Enable
好像,
Enable or disable tooltips globally.
Note May not be supported on all platforms (eg. Cocoa).
我假设其中包括您的平台...
相反,您可能需要为 window 本身设置工具提示。对于 window,我看不到 ToolTop_Enable
方法,但是将工具提示设置为空字符串似乎对我有用,
import wx
app = wx.App()
frame = wx.Frame(None, -1, '')
frame.SetToolTip(wx.ToolTip(''))
frame.SetSize(wx.Size(300,250))
frame.Show()
app.MainLoop()
编辑:定义一个子工具提示 class,它可以是 enabled/disabled,默认值基于全局值。
import wx
EnableTooltips = False
class Tooltip(wx.ToolTip):
'''A subclass of wx.ToolTip which can be disabled'''
def __init__(self, string, Enable=EnableTooltips):
self.tooltip_string = string
self.TooltipsEnabled = Enable
wx.ToolTip.__init__(self, string)
self.Enable(Enable)
def Enable(self, x):
if x is True:
self.SetTip(self.tooltip_string)
self.TooltipsEnabled = True
elif x is False:
self.SetTip("")
self.TooltipsEnabled = False
app = wx.App()
frame = wx.Frame(None, -1, '')
tt = Tooltip('test')
frame.SetToolTip(tt)
frame.SetSize(wx.Size(300,250))
frame.Show()
app.MainLoop()
我不确定这是否会动态工作(即一旦您启动 gui,框架工具提示已经设置并且更改它们的值可能不会更新)。
单个工具提示的最终答案非常简单,但却花了很长时间才找到。
使用 SetToolTipString("my Tool Tip")
设置工具提示,但使用 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()