Notebook
クラスには、いくつかのタブ/ページ(wx.Panel
を継承)があります。右クリックしたときにwx.Notebookページにフォーカスする方法
現在、Notebook
クラス内で右クリックが検出され、すべて正常に動作します。唯一の問題は、特定のタブを右クリックすると、そのタブに焦点を当てたいと思うことです。
どうすればいいですか?私ができることはそれを左クリックすることだけでした。
TabContentクラス:
class TabContent(wx.Panel) :
def __init__(self, parent, id) :
# Calls the constructor for wx.Panel
wx.Panel.__init__(self, parent = parent, id = id)
# Creates a vertical sizer
sizer = wx.BoxSizer(wx.VERTICAL)
# Creates an empty multi-line wx.TextCtrl
textArea = wx.TextCtrl(self, style = wx.TE_MULTILINE)
# Adds the text area to the sizer
sizer.Add(textArea, 1, wx.EXPAND | wx.ALL, 2)
# Sets the previously created sizer as this panel's sizer
self.SetSizer(sizer)
ノートクラス:
class Notebook(wx.Notebook) :
def __init__(self, parent) :
wx.Notebook.__init__(self, parent, id = wx.ID_ANY, style = wx.BK_DEFAULT)
# Initialises tab number to 1
self.untitledCounter = 1
# Adds an empty tab
self.addTab()
# Sets up events
self.Bind(wx.EVT_RIGHT_DOWN, self.onMouseRightClicked)
def onMouseRightClicked(self, event) :
print("Left button was clicked on tab " + str(self.GetCurrentPage().GetId()))
?私はそれを右クリックしたときに集中したいと思いますが、すでに試してみましたが、うまくいきません。 私のための唯一の「働く方法」は、タブをクリックしたままにしておき、それが選択され、もちろん焦点が当てられます。代わりに右クリックすることでそれを行う方法はありますか? マウスをクリックすると、カーソル座標の下にオブジェクトが表示されるなどの機能はありますか? – Michael
@Michael、いくつかのページがあるwxNotebookがあります。一度に1ページしか選択できません。 IIUC、あなたがしたいのは、ページのタイトルを右クリックし、そのページを選択させることです。私は正しい?同じページタイトルを左クリックするとどうなりますか? – Igor
はい、そうです。左クリックすると選択されますが、ユーザがタブを右クリックできるようにしたいと思います。これは、 "閉じる"、 "すべて閉じる"などのオプションを含むポップアップメニューを開きます。もちろん、クリックしたタブを識別する方法が必要です。たとえば、_medit_では、タブを右クリックしてもフォーカスは得られませんが、閉じることができます。 – Michael