diff --git a/lightweight_charts/table.py b/lightweight_charts/table.py index 9d23c71..b360b39 100644 --- a/lightweight_charts/table.py +++ b/lightweight_charts/table.py @@ -1,3 +1,4 @@ +import asyncio import random from typing import Union @@ -69,10 +70,19 @@ class Table(Pane, dict): self._formatters = {} self.headings = headings self.is_shown = True - if return_clicked_cells: - self.win.handlers[self.id] = lambda rId, cId: func(self[rId], cId) - else: - self.win.handlers[self.id] = lambda rId: func(self[rId]) + def wrapper(rId, cId=None): + if return_clicked_cells: + func(self[rId], cId) + else: + func(self[rId]) + + async def async_wrapper(rId, cId=None): + if return_clicked_cells: + await func(self[rId], cId) + else: + await func(self[rId]) + + self.win.handlers[self.id] = async_wrapper if asyncio.iscoroutinefunction(func) else wrapper self.return_clicked_cells = return_clicked_cells headings = list(headings)