wxPython为工具b中的按钮设置帮助字符串

2024-09-28 22:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到每当我将鼠标移到工具栏上的工具上时,状态栏中都会出现一个帮助字符串。我找不到用文本按钮来实现这一点的方法。在

我的工具栏创建类似于

# Make Tool Bar
toolbar = self.CreateToolBar()
# Make Tool Bar Items
# Play
self.addBasicTool(toolbar, "Play",
                  "This is my help string",
                  stuff.image_play,
                  self.OnPlay)
# My Button
btn = wx.Button(toolbar, wx.ID_OPEN, label="TEXT BUTTON ")
btn.Bind(wx.EVT_BUTTON, self.OnButtonPress)
toolbar.AddControl(btn)

addBasicTool只是获取图像,将其缩放到适当的大小,使用addBasicTool创建工具,并将工具绑定到处理程序。在

^{pr2}$

对于工具,helper字符串设置得非常直接。我找不到任何东西来做同样的按钮。在

这个按钮可能只是一个填充物,直到我得到一个图标,但我仍然好奇如何帮助字符串。我可以有一个处理程序来设置鼠标在按钮上方时的状态栏,但我觉得这已经在某个地方完成了。谢谢你的帮助


Tags: 工具字符串selfplaymakebartool鼠标
1条回答
网友
1楼 · 发布于 2024-09-28 22:35:26

基本上,当鼠标在按钮上移动时,你必须抓住它,并相应地更新状态栏。这并不难。您只需要绑定到wx.EVT_MOTION。下面是一个简单的例子:

import wx

########################################################################
class MyPanel(wx.Panel):
    """"""

    #                                   
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent)
        self.frame = parent

        test_btn = wx.Button(self, label='Test Button')
        test_btn.Bind(wx.EVT_MOTION, self.updateStatusBar)

        test_btn_2 = wx.Button(self, label='Test Button')
        test_btn_2.Bind(wx.EVT_MOTION, self.updateStatusBar)

        self.buttons = {test_btn: 'Test help string',
                        test_btn_2: 'Another string'}

        main_sizer = wx.BoxSizer(wx.VERTICAL)
        main_sizer.Add(test_btn, 0, wx.ALL, 5)
        main_sizer.Add(test_btn_2, 0, wx.ALL, 5)
        self.SetSizer(main_sizer)

    #                                   
    def updateStatusBar(self, event):
        """"""
        btn = event.GetEventObject()
        if btn in self.buttons:
            status = self.buttons[btn]
            self.frame.sb.SetStatusText(status)



########################################################################
class MyFrame(wx.Frame):
    """"""

    #                                   
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title='Test Help Strings')
        panel = MyPanel(self)
        self.sb = self.CreateStatusBar()
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame()
    app.MainLoop()

相关问题 更多 >