Can I change param.ObjectSelector by using mouse wheel?

I want to change param.ObjectSelector by using mouse wheel.
I checked some document. but I can’t find this method.

screen shot

mouse wheel

20220210_mouse_wheel_02

my simple code

from typing import Any
from bokeh.models.annotations import Title
import hvplot.pandas  # noqa
import numpy as np
import pandas as pd
import panel as pn
import param
import holoviews as hv
from numpy.random import *

pn.extension('tabulator')

# https://discourse.holoviz.org/t/how-do-i-delete-my-selected-point-dynamically-from-other-points-in-a-mapview-using-holoviews-datalink/2880/2
# Original Program

INDICES = ["v1", "v2", "v3", "v4"]
memory = set([])
#------------------------------------------------------------------------------------
# Definition ReactiveTable Class
#------------------------------------------------------------------------------------
class ReactiveTable(pn.viewable.Viewer):
    table = param.DataFrame()  # x,y table
    tabulator = pn.widgets.Tabulator()
    count = param.Integer()    # number of items
    random = param.Action(lambda x: x.param.trigger("random"), label="Random")
    x = param.ObjectSelector(INDICES[0], objects=INDICES, label="x")  # selector x
    y = param.ObjectSelector(INDICES[1], objects=INDICES, label="y")  # selector y
    int_list                = param.ListSelector(default=[3, 5], objects=[1, 3, 5, 7, 9], precedence=0.5)    
    Autocomplete_area = pn.widgets.AutocompleteInput(name='Autocomplete Input', options=INDICES, placeholder='Write something here')    
    table_widget = param.Parameter()  # to get table_widget.selection to work in depends
    Toggle_tf = param.Boolean() # <--- 20211220 add Toggle_tf param
    from holoviews import opts
    from holoviews import streams   
    selection = streams.Selection1D()   
    memory = set([])    
    first_flag = False ## Tap First Flag   

    def __init__(self, **params):
        super().__init__(**params)
        self.table_widget = pn.Param(self.param.table)[0]
        self.Toggle = pn.widgets.Toggle.from_param(self.param.Toggle_tf,name='Push Toggle', button_type='default') # <<-- 20211220 add button_widget  
    #------------------------------------------------------------------------------------
    # Color Change depends on data
    #------------------------------------------------------------------------------------
    def color_negative_red(self,val):
        """
        Takes a scalar and returns a string with
        the css property `'color: red'` for negative
        strings, black otherwise.
        """
        color = 'red' if val > 60 else 'blue'
        return 'color: %s' % color

    def highlight_max(self,s):
        '''
        highlight the maximum in a Series yellow.
        '''
        is_max = s == s.max()
        return ['background-color: yellow' if v else '' for v in is_max]

    def change_data(self) :
        size = np.random.randint(10, 15)
        nums = np.random.randint(5, 10)                      # <--- 2021/12/06  Change nums of items 
        self.count = nums                                    # <--- 2021/12/06  Display nums of items
        INDICES = [ str('v'+str(i)) for i in range(nums) ]   # <--- 2021/12/06  Make a new indices list
        test = pd.DataFrame(
        {i: np.arange(1, 100, size) for i in INDICES}) # numpy.arange([start, ]stop, [step, ]dtype = None)
        for i in range(len(test)) :
            for j in range(len(INDICES)) :
                test.iloc[i][j]=test.iloc[i][j]*(rand()+1)+np.random.randint(15)
        TEST = [ str('T'+str(i)) for i in range(len(test)) ]   # <--- 2021/12/06  Make a new indices list  
        print (TEST)   
        test.index = TEST               
        self.table = test.T
        print ('2022/02/10 self.table\n', self.table)
        self.tabulator.value = self.table
        print ('2022/02/10 self.table\n', self.tabulator.value)
        self.tabulator.theme = 'midnight'        
        self.tabulator.style.applymap(self.color_negative_red,subset='T3').apply(self.highlight_max,subset='T3')
        print ('2022/02/10 Change color\n')
        self.param.x.objects = INDICES   # change selector x lists
        self.param.y.objects = INDICES   # change selector y lists
        self.Autocomplete_area.options = INDICES

        # https://panel.holoviz.org/reference/widgets/Tabulator.html#styling
        # Tabulator スタイリング

    # Definition click random button
    #@param.depends("random", watch=True, on_init=True)
    @param.depends('Toggle_tf',watch=True, on_init=True)
    def _fill_table_with_random_data(self):
        if hasattr(self, "tabs") : 
            self.memory=[]
            self.first_flag = True                 
            if self.Toggle_tf == True :       
                self.change_data()
                self.Toggle.name = 'Finish'
                self.Toggle.button_type = 'primary'                                       
            else :
                self.Toggle.name = 'Push Toggle'
                self.Toggle.button_type = 'default'
                self.Toggle_tf = False
                 
        else :
            self.change_data()

    # Definition click table widget
    @param.depends("tabulator.selection",watch=True)
    # @param.depends("table_widget.selection", watch=True)
    def _set_x_with_table_selection(self):
        OBJECT = (self.param.x.objects)
        if self.tabulator.selection:
            self.x = OBJECT[self.tabulator.selection[0]]           
            if hasattr(self, "tabs") : self.tabs.active = 0  # if it is not initial , self has tabs objects. so change active tab=0 
        else:
            self.x = OBJECT[0]
           
        # self.count += 1 # <--- 2021/12/06 Comment out

    # Definition select x value
    @param.depends("x",watch=True)
    def _set_table_selection_with_x(self):
        OBJECT = (self.param.x.objects)
        self.tabulator.selection = [OBJECT.index(self.x)]
        self.Autocomplete_area.value = self.x
        self.memory=[]  
        self.first_flag = True            

    @param.depends("Autocomplete_area.value",watch=True)
    def _set_table_selection_with_Autocomplete_area(self):
        OBJECT = (self.Autocomplete_area.options)
        sel = self.Autocomplete_area.value
        if (sel in OBJECT) : 
            self.tabulator.selection = [OBJECT.index(self.Autocomplete_area.value)]
            self.memory=[]
            self.first_flag = True              

    # Definition select x,y value or click random button
#    @param.depends("x", "y", "random")
    @param.depends("x", "y", "selection.index" , 'Toggle_tf')

    def plot(self):        
        index = self.selection.index
        if self.first_flag == True or self.Toggle_tf == True :
            index = []
            self.first_flag = False
        print ('debug', index , 'toggle_flag',self.Toggle_tf)
        df = pd.DataFrame ({"x": self.table.loc[self.x], "y": self.table.loc[self.y]})
        for i in index:
            self.memory.append('T'+str(i))  # add previous indices
        df2 = df.loc[~df.index.isin(self.memory)]  # remove all past indices  
        new_graph = hv.Scatter(df2, "x", "y").opts(size=5, color="yellow")  # plot              
        #相関係数を計算
        x_corr = df2['x'].to_numpy().tolist() 
        y_corr = df2['y'].to_numpy().tolist()
        # 相関行列を計算
        coef = np.corrcoef(x_corr, y_corr)
        # 相関行列を表示
        print('20220105 Debug correlation value : ',coef)
        a, b = np.polyfit(x_corr, y_corr, 1)  
        if b>0 :
            plot_title = 'Rxy='+str(coef[0][1])[0:4] + ' : y='+str(a)[0:5]+'x+'+str(b)[0:5] 
        else :
            plot_title = 'Rxy='+str(coef[0][1])[0:5] + ' : y='+str(a)[0:5]+'x'+str(b)[0:6]               
        graph_1 = self.table.T.hvplot.scatter(
            x=self.x, y=self.y, color="red", grid=True, xlim=(0, 100), ylim=(0, 100) 
        ).opts(toolbar='below',size=8, title=plot_title, tools=['tap','box_select', 'lasso_select'])
        graph_2 =  hv.Slope(a, b).opts(color='green', line_width=4 , line_dash='dashed')
        # Declare points as source of selection stream   
        self.selection.source=graph_1        

        plot = graph_1 * graph_2 * new_graph
        return plot

    # https://holoviews.org/reference/apps/bokeh/selection_stream.html
    # https://holoviews.org/reference/containers/bokeh/DynamicMap.html

    # Definition panel layout
    def __panel__(self):
        # Layout
        graph_layout = pn.Row(
            pn.Column(
                pn.pane.Markdown("## Update table"),
                self.param.x,
                self.Autocomplete_area,
                self.param.y,
                # self.param.random,
                # self.Toggle,
            ),
            pn.panel(pn.Row(self.plot), sizing_mode="fixed"),
        )
        list_layout = pn.Column(self.tabulator, self.param.count, self.Toggle)

        self.tabs = pn.Tabs(
            ("Graph", graph_layout),
            ("List", list_layout),
            active=self.tabs.active if hasattr(self, "tabs") else 0,
        )

        return pn.template.FastListTemplate(
            site="Panel",
            main=self.tabs,
            title="Panel Sample",
            theme="dark",
        )

# run app
if __name__ == "__main__":
    app = ReactiveTable()
    app.show(port=5007)
elif __name__.startswith("bokeh"):
    app = ReactiveTable()
    app.servable()

My original X items are so many. So I think it is so trouble to select one by one.
Could someone help me?

I post additional explanation. my meaning is what I want to do.

  1. move mouse position on X
  2. wheel mouse on X
  3. Change right graph automatically(don’t need click mouse)

screen shot

screen shot

I know panel select can use mouse wheel. But I want to change graph correspond to mouse wheel.

select example (I know already, we can use mouse wheel. I want to change value without click)

import panel as pn
pn.extension()
TEST = [ str('T'+str(i)) for i in range(1000) ]  
select = pn.widgets.Select(name='Select', options=TEST) 
select

Select — Panel 0.12.6 documentation (holoviz.org)

Could someone help me?