def insert(self, title, widget=None, position=-1, focus=True):
"""Insert new tab
title: Any flow or fixed widget to use as the tab's title
widget: Widget to show when this tab is selected or None
position: Where to insert the new tab; int for list-like index or
'right'/'left' to insert next to focused tab
focus: True to focus the new tab, False otherwise
Return TabID of inserted tab
"""
curpos = self.focus_position
if position == 'right':
newpos = (curpos+1) if curpos is not None else 0
elif position == 'left':
newpos = max(curpos, 0) if curpos is not None else 0
elif isinstance(position, int):
if position < 0:
newpos = position + len(self._contents) + 1
else:
newpos = position
else:
raise ValueError('Invalid position: {!r}'.format(position))
# Insert new tab ID
this_id = _find_unused_id(self._ids)
self._ids.insert(newpos, this_id)
# Insert title
self._tabbar.base_widget.insert(newpos, title)
# Insert content
self._contents.insert(newpos, widget)
if focus:
self.focus_position = newpos
return this_id
评论列表
文章目录