Frage

Ich habe eine Schnittstelle, die zwei Symbolleisten hat, ein mit dem Rahmen verbunden und eine in einem Notebook Tab eingebettet. Die im Rahmen zeigt dutifully longhelp Strings in der Statusbar, die man in den Notebook-Registerkarte nicht. Wie kann ich feststellen, das man auf dem Notebook Tab, wo seine Hilfe angezeigt werden, oder muss ich verwalten eingeben und Bindungen mich verlassen?

War es hilfreich?

Lösung

Sie haben in wxWidgets:

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

In C ++ Programm, das Sie diese Funktion außer Kraft setzen kann (einfaches Ändern GetParent (), um GetTopLevelParent () funktionieren soll). In Python Sie können, wie Sie geschrieben haben, binden betreten / verlassen Ereignisse und rufen DoGiveHelp () von Handler.

Andere Tipps

Auch wenn dieser Beitrag ziemlich alt ist, ich auf das gleiche Problem selbst nur gestolpert. Mit WxPython Phoenix 4.0.0a4 fand die Lösung, die ich war, eine Funktion zum EVT_TOOL_ENTER Ereignisse zu binden, um die ID der Symbolleiste verwenden.

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

Dann in your_function können Sie das Werkzeug aus der Werkzeugleiste erhalten, um den Hilfetext aus dem Werkzeug und schreiben, dass in die Statusleiste.

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)

Eine kurze Beschreibung des EVT_TOOL_ENTER kann in der wxPython docs .

von WxPython docs „““ longHelpString Diese Zeichenkette wird in der Statusleiste (falls vorhanden) des Mutterrahmens angezeigt, wenn der Mauszeiger im Werkzeug ist "" "

so Symbolleiste in Notebook bekommen keine statusbar lange Hilfe anzuzeigen, also entweder durch src sollten wir invertigate wie es fragt abt Statusleiste und liefern einen ref Hauptrahmen Statusleiste

sonst denke ich besserer Weg ist nur wxToolBar :: OnMouseEnter und die Hilfe direkt in der Statusleiste überschreibt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top