在wxPython中将滚动事件路由到ScrolledPanel,而不使用路由焦点

2024-09-26 22:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个包含多个wx.面板包含两个wx.TextCtrl还有一个wx.lib.滚动面板。滚动面板。当鼠标在wx.面板(所以无论是textcrl还是panel,都不一定有焦点)而不是将焦点从以前的控件中转移出去。在

例如,我以前发现的解决方案是在滚动面板上移动鼠标,使其获得焦点,但这会使焦点远离textcrl。在

我试过把电动摩丝轮绑在wx.面板但当我抓到的时候也没用事件.GetWheelDelta()或事件.GetWheelRotation()

有什么想法?在


Tags: 面板lib事件鼠标解决方案控件焦点wx
2条回答

在每个wx.面板在那个滚动面板上,当鼠标移动到滚动面板上时,必须绑定一个事件来设置焦点。在

class ListItem(wx.Panel):
    def __init__(self, parent):
        super(ListItem, self).__init__(parent)

        self.Bind(wx.EVT_MOTION, self.OnMouseMotion)

        #Add all your other objects to this panel as normal

    def OnMouseMotion(self, event):
        panel = event.GetEventObject().GetParent()        
        panel.SetFocus()

如果不为滚动面板上的每个列出的面板创建类,也可以在线执行:

解除对滚动窗口焦点事件的绑定有效吗?在

    self.scrollwin.Unbind(wx.EVT_SET_FOCUS)
    self.scrollwin.Unbind(wx.EVT_KILL_FOCUS)

相关问题 更多 >

    热门问题