wxSuperToolTip更改SetMessage上的位置

时间:2016-11-02 17:29:13

标签: python python-2.7 wxpython wxwidgets

我正在创建一个wx.agw.SuperToolTip。我每隔几秒钟更新一次提示中的消息,如果消息更新时提示,则提示会在不同的位置重新绘制。

新位置似乎与原始位置与屏幕左上角的关系有关,但这可能只是巧合。

此外,如果我通过评论wx.lib.agw.supertooltip.ToolTipWindowBase.Invalidate()的来电来修改self.CalculateBestSize(),问题就会消失。当然,窗口不会调整大小,因此没有解决方案。

我正在使用wxPython 2.8.12.1。

这是一个展示问题的应用:

class MyFrame(wx.Frame):

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title,
                          pos=(150, 150), size=(350, 225))

        panel = wx.Panel(self)

        btn = wx.Button(panel, -1, "Hover over this")

        self._superTip = SuperToolTip("")
        self._superTip.SetHeader("Heyo!")
        self._superTip.SetTarget(btn)
        self._superTip.EnableTip(True)
        self._superTip.SetDrawHeaderLine(True)
        self._superTip.SetDrawFooterLine(True)
        self._superTip.SetStartDelay(1)
        self._superTip.SetEndDelay(60)
        currentFooterFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
        currentFooterFont.SetPointSize(6)
        currentFooterFont.SetWeight(wx.NORMAL)
        self._superTip.SetFooterFont(currentFooterFont)
        self._superTip.SetFooter('(Click to close)')
        self._superTip.ApplyStyle("Blue Glass")
        self._superTip.SetDropShadow(True)

        self.ttTimer = wx.Timer(self)

        self.ttText = 'What the?'

        self.Bind(wx.EVT_TIMER, self.onTimer, self.ttTimer)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(btn, 0, wx.ALL, 10)
        panel.SetSizer(sizer)

        self.ttTimer.Start(2000)

        panel.Layout()



    def onTimer(self, evt):
        self._superTip.SetMessage(self.ttText)
        self.ttText += '?'

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, "STT error demo")
        self.SetTopWindow(frame)

        frame.Show(True)
        return True

app = MyApp(redirect=True)
app.MainLoop()

有关如何在没有位置更改的情况下更新可见工具提示的任何想法?

非常感谢。

0 个答案:

没有答案