簡體   English   中英

wxPython-為工具欄中的按鈕設置幫助字符串

[英]wxPython - Setting a help string for a button in toolbar

我注意到,每當我將鼠標懸停在工具欄中的工具上時,都會在狀態欄中顯示幫助字符串。 我找不到通過文本按鈕完成此操作的方法。

我的工具欄創建類似於

# 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創建工具,然后將該工具綁定到處理程序。

def addBasicTool(self, toolbar, label, desc, imgPath, handler):
    icon_width=stuff.toolbar_icon_w
    icon_height=stuff.toolbar_icon_h
    size = (icon_width, icon_height)
    img = wx.Image(imgPath, wx.BITMAP_TYPE_ANY).\
                   Scale(*size).ConvertToBitmap()
    tool = toolbar.AddSimpleTool(-1, img, label, desc)
    self.Bind(wx.EVT_MENU, handler, tool)

對於該工具,輔助字符串非常簡單。 我找不到與該按鈕相同的操作。

在我得到一個按鈕之前,這個按鈕可能只是一個填充物,但是我仍然很好奇如何完成輔助字符串。 我可以有一個處理程序,當鼠標懸停在按鈕上方時,該處理程序可以設置statusBar,但是我覺得那已經在某個地方完成了。 謝謝你的幫助

基本上,您必須在鼠標移至按鈕上方時抓住鼠標,並相應地更新狀態欄。 這不是很難。 您只需要綁定到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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM