كسبيثون: كيفية جعل اثنين من أشرطة الأدوات استخدام شريط الحالة واحدة لتلميحات؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي واجهة أن اثنين من أشرطة الأدوات، واحدة تعلق على الإطار واحد جزءا لا يتجزأ في علامة تبويب دفتر الملاحظات. واحد في إطار يظهر بأخلاص سلاسل longHelp في شريط الحالة، واحد في علامة التبويب دفتر لا. كيف أقول واحد على علامة التبويب دفتر مكان عرض مساعدته، أو لا بد لي من إدارة الدخول والخروج الارتباطات نفسي؟

هل كانت مفيدة؟

المحلول

لديك في كويدغيتس:

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

في برنامج C ++ يمكنك تجاوز هذه الوظيفة (مجرد تغيير GetParent () لGetTopLevelParent () يجب أن تعمل). في بيثون يمكنك فقط، كما كتبت، ربط إدخال / ترك الأحداث وندعو DoGiveHelp () من معالجات.

نصائح أخرى

وعلى الرغم من أن هذا المنصب قديمة نوعا ما، وأنا فقط عثر عليها في نفس هذه المشكلة نفسي. باستخدام كسبيثون فينيكس 4.0.0a4، كان الحل وجدت لربط وظيفة لهذا الحدث EVT_TOOL_ENTER باستخدام معرف شريط الأدوات.

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

وبعد ذلك في your_function يمكنك الحصول على أداة من شريط الأدوات، نص التعليمات من أداة وكتابة ذلك في شريط الحالة.

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)

ووصف موجز للEVT_TOOL_ENTER يمكن العثور عليها في في مستندات كسبيثون .

ومن مستندات كسبيثون "" " longHelpString يظهر هذه السلسلة في شريط الحالة (إن وجدت) من الإطار الأصل عندما يكون مؤشر الماوس داخل الأداة "" "

وهكذا شريط الأدوات في دفتر لا تحصل على أي شريط الحالة لعرض التعليمات طويلة، لذلك إما من خلال SRC علينا أن invertigate كيف يطمئن أبت شريط الحالة وتوفير المرجع إلى شريط الحالة الإطار الرئيسي

وآخر وأعتقد أفضل طريقة هي مجرد تجاوز wxToolBar :: OnMouseEnter وعرض مساعدة مباشرة على شريط الحالة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top