wxPython: como fazer duas barras de ferramentas usar uma barra de status para dicas de ferramentas?

StackOverflow https://stackoverflow.com/questions/1014239

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho uma interface que tem duas barras de ferramentas, um ligado à estrutura e um incorporado em um guia notebook. A uma na moldura lealmente mostras longHelp cordas na barra de estado, a um separador no caderno não. Como posso saber o que está no guia notebook onde exibir sua ajuda, ou eu tenho de gerir entrar e ligações Deixe-me?

Foi útil?

Solução

Você tem em wxWidgets:

void wxToolBarBase::OnMouseEnter(int id)
{
    ...
    wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
    if ( frame )
    {
        ...
        frame->DoGiveHelp(help, id != wxID_ANY);
    }
    ...
}

Programa Em C ++ você pode substituir essa função (simplesmente mudando GetParent () para GetTopLevelParent () deve funcionar). Em Python você só pode, como você escreveu, se ligam inserir eventos / sair e chamar DoGiveHelp () de manipuladores.

Outras dicas

Embora este post é bastante antigo, eu só tropeçou em este mesmo problema sozinho. Usando wxPython Phoenix 4.0.0a4, a solução que eu encontrei foi a de ligar uma função para o evento EVT_TOOL_ENTER usando id da barra de ferramentas.

your_frame.Bind(wx.EVT_TOOL_ENTER, your_function, id=toolbar_id)

Então, em your_function você pode obter a ferramenta da barra de ferramentas, o texto de ajuda da ferramenta e escrever que na barra de status.

def your_function(e):
    tool_id = e.GetSelection()
    if tool_id != -1:
        # if the mouse is over a toolbar item
        event_object = e.GetEventObject()
        tool = event_object.FindById(tool_id)  
        text = tool.GetLongHelp()
    else:
        # if the mouse is in the toolbar area, but not on an item
        text = some_default_text
    your_frame.GetStatusBar().SetStatusText(text)

Uma breve descrição do EVT_TOOL_ENTER pode ser encontrada no docs wxPython .

a partir de docs wxPython """ longHelpString Esta cadeia é mostrado na barra de estado (caso exista) da armação principal quando o cursor do rato é no interior da ferramenta "" "

para barra de ferramentas no notebook não recebe qualquer barra de status para exibir longa ajuda, por isso, quer através src devemos invertigate como ele indaga abt barra de status e fornecer uma ref a barra de status quadro principal

else eu acho que a melhor maneira é apenas para substituir wxToolBar :: OnMouseEnter e exibição de ajuda diretamente na barra de status

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top