我有一個接口有兩個工具欄,一個連接到框架,另一個嵌入在筆記本選項卡中。框架中的人忠實地在狀態欄中顯示longHelp字符串,筆記本選項卡 中的字符串沒有。如何告訴筆記本選項卡上顯示其幫助的位置,或者我必須自己管理輸入和離開綁定?wxPython:如何讓兩個工具欄使用工具提示的一個狀態欄?
2
A
回答
0
你有wxWidgets的:
void wxToolBarBase::OnMouseEnter(int id)
{
...
wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
if (frame)
{
...
frame->DoGiveHelp(help, id != wxID_ANY);
}
...
}
在C++程序,你可以重寫此功能(只需更改的getParent()來GetTopLevelParent()應該工作)。在Python中,只能像你寫的那樣綁定進入/離開事件並從處理程序中調用DoGiveHelp()。
0
從wxPython的文檔
「」「 longHelpString 此字符串被顯示在狀態(如果有的話)的父框架的當鼠標指針是工具 內部‘’」在筆記本沒有按
所以工具欄沒有任何狀態欄顯示長時間的幫助,所以要麼通過src我們應該改變它如何查詢abt狀態欄並提供ref到主框架狀態欄
其他我認爲更好的方法是重寫wxToolBar :: OnMouseEnter和直接在狀態欄顯示幫助
1
雖然這篇文章比較陳舊,但我自己也偶然發現了這個問題。使用wxPython Phoenix 4.0.0a4,我找到的解決方案是使用工具欄的id將函數綁定到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的簡短說明可在wxPython docs中找到。
相關問題
- 1. 摺疊工具欄 - 狀態欄下的工具欄
- 2. 如何在工具欄的底部定位一個工具欄?
- 3. 如何在狀態欄中顯示CMFCRibbonButton的工具提示?
- 4. wxPython的工具欄問題
- 5. 工具欄推開狀態欄
- 6. 工具欄覆蓋狀態欄
- 7. Android:工具欄狀態欄重疊
- 8. 半透明狀態欄和工具欄
- 9. wxPython工具欄幫助
- 10. 如何使一個工具欄菜單
- 11. 同時隱藏/顯示導航欄,工具欄和狀態欄
- 12. wxpython工具欄不在os中顯示
- 13. 如何使工具欄與狀態欄相同
- 14. 白色透明工具欄,我如何使狀態欄匹配
- 15. 更新Powershell中的狀態欄工具提示
- 16. JavaFX的:工具欄與如何創建一個工具欄這樣imagebuttons
- 17. 使用工具欄
- 18. 使用自定義工具欄時狀態欄變爲白色
- 19. iPhone Safari的screen.availHeight和狀態欄/工具欄/地址欄
- 20. 如何在奇巧透明狀態欄與工具欄和NavigationView
- 21. 如何在DHTMLX中創建底部工具欄(狀態欄)?
- 22. CoordinatorLayout中的兩個工具欄
- 23. 如何添加一個小工具到qt工具欄
- 24. 合併工具提示文本功能與狀態欄
- 25. 如何使工具欄按鈕比工具欄更大?
- 26. 做一個工具欄,是一個UIPageViewController
- 27. Instanciating一個工具欄有一個ApplicationContext
- 28. wxPython狀態欄
- 29. 工具欄和XMLHttpRequest狀態= 0
- 30. 更新工具欄按鈕狀態MFC