def removeListener(self, listener, iface=None):
        if (isinstance(listener, IRepaintRequestListener) and
                (iface is None or issubclass(iface, IRepaintRequestListener))):
            super(TabSheet, self).removeListener(listener, iface)
            if isinstance(listener, CommunicationManager):
                # clean the paintedTabs here instead of detach to avoid subtree
                # caching issues when detached-attached without render
                self._paintedTabs.clear()

        if (isinstance(listener, ISelectedTabChangeListener) and
                (iface is None or
                        issubclass(iface, ISelectedTabChangeListener))):
            self.withdrawListener(SelectedTabChangeEvent,
                    listener, _SELECTED_TAB_CHANGE_METHOD)

        super(TabSheet, self).removeListener(listener, iface)
Removes a tab selection listener
dataset/ETHPy150Open rwl/muntjac/muntjac/ui/tab_sheet.py/TabSheet.removeListener