右键单击它时如何聚焦wx.Notebook页面

时间:2016-11-27 15:57:43

标签: python-3.x wxpython

我有一个Notebook类,其中包含一些标签/页面(继承自wx.Panel)。

我目前在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()))

2 个答案:

答案 0 :(得分:-1)

@迈克尔,

尝试在页面的事件处理程序中调用SetFocus()。

答案 1 :(得分:-1)

您可以使用笔记本电脑的HitTest方法找到点击的标签,然后如果您希望激活该标签,则可以调用笔记本电脑的SetSelection方法